Delen via


De vereisten voor FileTable inschakelen

van toepassing op:SQL Server-

Hierin wordt beschreven hoe u de vereisten voor het maken en gebruiken van FileTables inschakelt.

Voorwaarden inschakelen voor FileTable

Als u de vereisten voor het maken en gebruiken van FileTables wilt inschakelen, schakelt u de volgende items in:

FILESTREAM inschakelen op exemplaarniveau

FileTables breiden de mogelijkheden van de FILESTREAM-functie van SQL Server uit. U moet FILESTREAM inschakelen voor I/O-toegang op Windows-niveau en op het exemplaar van SQL Server voordat u FileTables kunt maken en gebruiken.

FILESTREAM inschakelen op exemplaarniveau

Zie FILESTREAM inschakelen en configureren voor meer informatie over het inschakelen van FILESTREAM.

Wanneer u sp_configure aanroept om FILESTREAM op exemplaarniveau in te schakelen, moet u de optie filestream_access_level instellen op 2. Zie FILESTREAM-toegangsniveau (serverconfiguratieoptie)voor meer informatie.

FILESTREAM via de firewall toestaan

Zie Een firewall configureren voor FILESTREAM-toegangvoor meer informatie over het toestaan van FILESTREAM via de firewall.

Een FILESTREAM-bestandsgroep opgeven op databaseniveau

Voordat u FileTables in een database kunt maken, moet de database een FILESTREAM-bestandsgroep hebben. Voor meer informatie over deze vereiste, zie Maak een FILESTREAM-Enabled-databaseaan.

Niet-transactionele toegang op databaseniveau inschakelen

Met FileTables kunnen Windows-toepassingen een Windows-bestandsingang verkrijgen naar FILESTREAM-gegevens zonder dat hiervoor een transactie is vereist. Als u deze niet-transactietoegang wilt toestaan tot bestanden die zijn opgeslagen in SQL Server, moet u het gewenste niveau van niet-transactionele toegang opgeven op databaseniveau voor elke database die FileTables bevat.

Controleren of niet-transactionele toegang is ingeschakeld voor databases

Voer een query uit in de catalogusweergave sys.database_filestream_options (Transact-SQL) en controleer de kolommen non_transacted_access en non_transacted_access_desc.

SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
    FROM sys.database_filestream_options;
GO

Niet-transactionele toegang op databaseniveau inschakelen

De beschikbare niveaus van niet-transactionele toegang zijn VOLLEDIG, READ_ONLY en UIT.

Geef het niveau van niet-transactionele toegang op met Transact-SQL

Wanneer u een nieuwe databasemaakt, roept u de CREATE DATABASE (SQL Server Transact-SQL) instructie aan met de optie NON_TRANSACTED_ACCESS FILESTREAM.

CREATE DATABASE database_name
  WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );

Wanneer u een bestaande database wijzigt, roept u de ALTER DATABASE (Transact-SQL) instructie aan met de optie NON_TRANSACTED_ACCESS FILESTREAM.

ALTER DATABASE database_name
  SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );

Het niveau van niet-transactionele toegang opgeven met SQL Server Management Studio

U kunt het niet-transactionele toegangsniveau opgeven in het veld FILESTREAM Niet-transacted Access van de Opties van de database-eigenschappen. Zie Database-eigenschappen (optiespagina)voor meer informatie over dit dialoogvenster.

Een map opgeven voor FileTables op databaseniveau

Wanneer u niet-transactionele toegang tot bestanden op databaseniveau inschakelt, kunt u eventueel tegelijkertijd een mapnaam opgeven met de optie DIRECTORY_NAME. Als u geen mapnaam opgeeft wanneer u niet-transactionele toegang inschakelt, moet u deze later opgeven voordat u FileTables in de database kunt maken.

In de maphiƫrarchie van FileTable wordt deze map op databaseniveau een submap van de opgegeven sharenaam voor FILESTREAM op exemplaarniveau en een bovenliggende map van de FileTables die in de database zijn aangemaakt. Zie Werken met mappen en paden in FileTablesvoor meer informatie.

Een map opgeven voor FileTables op databaseniveau

De naam die u opgeeft, moet uniek zijn binnen de instantie voor directory's op databaseniveau.

Geef een map op voor FileTables met Transact-SQL

Wanneer u een nieuwe databasemaakt, roept u de CREATE DATABASE (SQL Server Transact-SQL) instructie aan met de optie DIRECTORY_NAME FILESTREAM.

CREATE DATABASE database_name
  WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
GO

Wanneer u een bestaande database wijzigt, roept u de ALTER DATABASE (Transact-SQL) instructie aan met de optie DIRECTORY_NAME FILESTREAM. Wanneer u deze opties gebruikt om de mapnaam te wijzigen, moet de database exclusief worden vergrendeld, zonder geopende bestandsingangen.

ALTER DATABASE database_name
    SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'directory_name' );
GO

Wanneer u een database bijvoegt, roept u de instructie CREATE DATABASE (SQL Server Transact-SQL) aan met de optie FOR ATTACH en met de FILESTREAM-optie DIRECTORY_NAME .

CREATE DATABASE database_name
    FOR ATTACH WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
GO

Wanneer u een database herstellen, roept u de instructie RESTORE (Transact-SQL) aan met de optie DIRECTORY_NAME FILESTREAM.

RESTORE DATABASE database_name
    WITH FILESTREAM ( DIRECTORY_NAME = N'directory_name' );
GO

Een map opgeven voor FileTables met SQL Server Management Studio

U kunt een mapnaam opgeven in het filestream-mapnaam veld van de pagina Opties van het dialoogvenster Database-eigenschappen. Zie Database-eigenschappen (optiespagina)voor meer informatie over dit dialoogvenster.

Bestaande mapnamen voor de instantie weergeven

Als u de lijst met bestaande mapnamen voor het exemplaar wilt weergeven, voert u een query uit in de catalogusweergave sys.database_filestream_options (Transact-SQL) en controleert u de kolom filestream_database_directory_name.

SELECT DB_NAME ( database_id ), directory_name
    FROM sys.database_filestream_options;
GO

Vereisten en beperkingen voor de map op databaseniveau

  • Het instellen van de DIRECTORY_NAME is optioneel wanneer u CREATE DATABASE of ALTER DATABASEaanroept. Als u geen waarde opgeeft voor DIRECTORY_NAME, blijft de mapnaam null. U kunt echter geen FileTables maken in de database totdat u een waarde opgeeft voor DIRECTORY_NAME op databaseniveau.

  • De mapnaam die u opgeeft, moet voldoen aan de vereisten van het bestandssysteem voor een geldige mapnaam.

  • Wanneer de database FileTables bevat, kunt u de DIRECTORY_NAME niet terugzetten op een null-waarde.

  • Wanneer u een database koppelt of herstelt, mislukt de bewerking als de nieuwe database een waarde heeft voor DIRECTORY_NAME die al bestaat in het doelexemplaren. Geef een unieke waarde op voor DIRECTORY_NAME wanneer u CREATE DATABASE FOR ATTACH of RESTORE DATABASEaanroept.

  • Wanneer u een bestaande database bijwerkt, is de waarde van DIRECTORY_NAME nul.

  • Wanneer u niet-actieve toegang op databaseniveau inschakelt of uitschakelt, controleert de bewerking niet of de mapnaam is opgegeven of uniek is.

  • Wanneer u een database verwijdert die is ingeschakeld voor FileTables, worden de map op databaseniveau en alle mapstructuren van alle FileTables eronder verwijderd.