تخفیف های داغ در جشنواره تابستانه توسینسو تخفیف های داغ در جشنواره تابستانه توسینسو
مانده تا پایان تخفیف
مشاهده دوره ها
0

چگونه از کلید خارجی در جدول از نوع FileTable در SQL استفاده کنیم؟

سلام خدمت دوستان گرامی  ، با توجه به اینکه Table از نوع FileTable با فیلد ها ثابت ایجاد می شود . و اجازه تغییر آن را نیز نمی دهد چگونه می توان Table دیگری را با آن مرتبط کرد. . به فرض شما شما یک تیبل پرسنل را دارید و می خواهید چندین فایل متن و تصویر را به آن مرتبط شود لازم این کار تعریف یک کلید خارجی (Foreign Key) در Table که از نوع FileTable درر آن است می باشد در صورتیکه SqlServer چنین اجازه به شما نمی دهد

پرسیده شده در 1393/10/25 توسط

2 پاسخ

0

در ضمن من از روش زیر جهت ایجاد و . . . استفاده کرده ام

CREATE DATABASE FileTableDB
ON PRIMARY
(Name = FileTableDB,
FILENAME = 'H:\FileTable\FTDB.mdf'),
FILEGROUP FTFG CONTAINS FILESTREAM
(NAME = FileTableFS,
FILENAME='H:\FileTable\FS')
LOG ON
(Name = FileTableDBLog,
FILENAME = 'H:\FileTable\FTDBLog.ldf')
WITH FILESTREAM (NON_TRANSACTED_ACCESS = FULL,
DIRECTORY_NAME = N'FileTableDB');
GO
 
SELECT DB_NAME(database_id),
non_transacted_access,
non_transacted_access_desc
FROM sys.database_filestream_options;
GO
 
 
-- Create FileTable Table
USE FileTableDB
GO
CREATE TABLE FileTableTb AS FileTable
WITH
(FileTable_Directory = 'FileTableTb_Dir');
GO
 
SELECT *
FROM FileTableTb
GO
SELECT [name]
,[file_type]
,CAST([file_stream] AS VARCHAR) FileContent
,[cached_file_size]
,[creation_time]
,[last_write_time]
,[last_access_time]
FROM [dbo].[FileTableTb]
GO
 
INSERT INTO [dbo].[FileTableTb]
([name],[file_stream])
SELECT
'dbHafez.accdb', * FROM OPENROWSET(BULK N'd:\dbHafez.accdb', SINGLE_BLOB) AS FileData
GO
SELECT [name]
,[file_type]
,CAST([file_stream] AS VARCHAR) FileContent
,[cached_file_size]
,[creation_time]
,[last_write_time]
,[last_access_time]
FROM [dbo].[FileTableTb]
GO
 
USE FileTableDB
GO
SELECT [name]
,[file_type]
,CAST([file_stream] AS VARCHAR) FileContent
,[cached_file_size]
,[is_directory]
FROM [dbo].[FileTableTb]
GO
 
SELECT FileTableRootPath('FileTableTb') AS FileTableRootPath
 
SELECT GetPathLocator('\\ALFA\MSSQLSERVER\FileTableDB\Fil  eTableTb_Dir')
 
SELECT file_stream.GetFileNamespacePath()
FROM [dbo].[FileTableTb]
پاسخ در 1393/10/25 توسط
1

سلام به شما دوست عزیز.

sql server وقتی که یک filetable میسازید یک ستون ایندکس به آن به نام stream_id اضافه می کند که می توانید از آن برای کلید و ارجاع استفاده کنید.

پاسخ در 1401/01/21 توسط

پاسخ شما