【发布时间】:2011-07-19 15:23:38
【问题描述】:
我创建了一个表,其中有一列应用了 FILESTREAM 属性,如下所示:
CREATE TABLE dbo.FileStorage
(
[ID] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE,
[Filename] [nvarchar](255) NOT NULL,
[Data] [varbinary](max) FILESTREAM NULL
)
GO
在存储过程中,我引用了PathName() 函数,该函数应该可用于上面的Data 列:
CREATE PROCEDURE GetPathName
-- Add the parameters for the stored procedure here
@fileId uniqueidentifier,
@filePath nvarchar(max) output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT @filePath = Data.PathName()
FROM dbo.FileStorage
WHERE ID = @fileId
END
GO
但是,当我执行上述脚本来创建存储过程时,SSMS 会打印错误:“函数路径名仅对具有 FILESTREAM 属性的列有效。”。我当然在打开 FILESTREAM 属性的情况下创建了表(并且在 DB 中启用了文件流支持),我什至在表中添加了一个文件。
当我尝试验证该列确实是 FILESTREAM 列时,SQL Server Management Studio 没有配合。该属性没有出现在列属性窗格中,当我编写表格脚本时,FILESTREAM 属性没有出现。
更新:另一个奇怪的是,我的 FileStorage 表从未出现在 SSMS intellisense 提供的表列表中。
有什么关系?如何操作或验证 SSMS 中的 FILESTREAM 属性?
【问题讨论】:
标签: sql-server-2008 filestream ssms