Partager via


GetFileNamespacePath (Transact-SQL)

Retourne le chemin d'accès UNC d'un fichier ou d'un répertoire dans un FileTable.

Syntaxe

<column-name>.GetFileNamespacePath(is_full_path, @option)

Arguments

  • column-name
    Nom de la colonne VARBINARY(MAX) file_stream d'un FileTable.

    La valeur column-name doit être un nom de colonne valide. Il ne peut pas s'agir d'une expression ni d'une valeur convertie à partir d'une colonne présentant un autre type de données.

  • is_full_path
    Expression entière qui spécifie s'il faut retourner un chemin d'accès absolu ou relatif. is_full_path peut prendre l'une des valeurs suivantes :

    Valeur

    Description

    0

    Retourne le chemin d'accès relatif dans le répertoire au niveau de la base de données.

    Il s'agit de la valeur par défaut

    1

    Retourne le chemin d'accès UNC complet, en commençant par \\computer_name.

  • @option
    Expression entière qui définit comment le composant serveur du chemin d'accès doit être mis en forme. @option peut prendre l'une des valeurs suivantes :

    Valeur

    Description

    0

    Retourne le nom de serveur converti au format NetBIOS, par exemple :

    \\SERVERNAME\MSSQLSERVER\MyDocumentDB

    Il s'agit de la valeur par défaut.

    1

    Retourne le nom de serveur non converti, par exemple :

    \\ServerName\MSSQLSERVER\MyDocumentDB

    2

    Retourne le chemin d'accès complet du serveur, par exemple :

    \\ServerName.MyDomain.com\MSSQLSERVER\MyDocumentDB

Type de retour

nvarchar(max)

Si l'instance SQL Server est groupée dans un cluster de basculement, le nom de l'ordinateur qui est retourné dans le cadre de ce chemin d'accès représente le nom d'hôte virtuel de l'instance cluster.

Lorsque la base de données appartient à un groupe de disponibilité AlwaysOn, la fonction FileTableRootPath retourne le nom de réseau virtuel (VNN) à la place du nom d'ordinateur.

Remarques d'ordre général

Le chemin d'accès que la fonction GetFileNamespacePath retourne est un chemin d'accès de fichier/répertoire logique présentant le format suivant :

\\<machine>\<instance-level FILESTREAM share>\<database-level directory>\<FileTable directory>\...

Ce chemin logique ne correspond pas directement à un chemin d'accès NTFS physique. Il est converti en chemin d'accès physique par le pilote de filtre du système de fichiers FILESTREAM et de l'agent FILESTREAM. Cette séparation entre le chemin d'accès logique et le chemin d'accès physique permet à SQL Server de réorganiser des données en interne sans affecter la validité du chemin d'accès.

Recommandations

Pour garder le code et les applications indépendantes de l'ordinateur actuel et de la base de données, évitez d'écrire du code qui contient des chemins d'accès de fichier absolus. À la place, obtenez le chemin d'accès complet à un fichier au moment de l'exécution à l'aide des fonctions FileTableRootPath et GetFileNamespacePath, comme indiqué dans l'exemple suivant. Par défaut, la fonction GetFileNamespacePath retourne le chemin d'accès relatif du fichier sous le chemin d'accès racine de la base de données.

USE MyDocumentDB;
@root varchar(100)
SELECT @root = FileTableRootPath();

@fullPath = varchar(1000);
SELECT @fullPath = @root + file_stream.GetFileNamespacePath() FROM DocumentStore
WHERE Name = N’document.docx’;

Exemples

Les exemples suivants indiquent comment appeler la fonction GetFileNamespacePath pour obtenir le chemin d'accès UNC d'un fichier ou d'un répertoire dans un FileTable.

-- returns the relative path of the form “\MyFileTable\MyDocDirectory\document.docx”
SELECT file_stream.GetFileNamespacePath() AS FilePath FROM DocumentStore
WHERE Name = N’document.docx’;

-- returns “\\MyServer\MSSQLSERVER\MyDocumentDB\MyFileTable\MyDocDirectory\document.docx”
SELECT file_stream.GetFileNamespacePath(1, Null) AS FilePath FROM DocumentStore
WHERE Name = N’document.docx’;

Voir aussi

Concepts

Travailler avec des répertoires et des chemins d'accès dans FileTables