在远程服务器中创建Stream DATABASE

时间:2009-12-21 08:27:51

标签: sql-server sql-server-2008 stored-procedures streaming

在这个论坛的一位好伙伴(DJHnz先生)的帮助下,我解决了关于创建流数据库的第一个问题 现在我面临另一个问题 我给你的代码是:


USE [master]
GO
/****** Object:  StoredProcedure [dbo].[sp_AddStreamDB]    Script Date: 12/21/2009 09:55:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_AddStreamDB](
    -- Add the parameters for the stored procedure here
    @DPath varchar(MAX),
    @DBName varchar(50),
    @Qchar varchar(1) = "'"
) AS
BEGIN_TRY:
    SET QUOTED_IDENTIFIER ON;
    SET NOCOUNT ON;
-- Insert statements for procedure here 
    DECLARE
    @ErrMsg nvarchar(4000),
    @DBName1 varchar(50),
    @DBName2 varchar(50),
    @DBNamefs varchar(50),
    @DBNamelog varchar(50),
    @FileGroupN varchar(100),
    @DATName varchar(MAX),
    @LOGName varchar(MAX),
    @FSName varchar(MAX),
    @CreateSdb nvarchar(MAX),
    @Statement nvarchar(MAX)
    SET @DBName1 = (@DBName + '1')
    SET @DBName2 = (@DBName + '2')
    SET @DBNamefs = (@DBName + 'fs')
    SET @DBNamelog = (@DBName + 'log')
    SET @FileGroupN = (@DBname + 'StreamGroup')
    SET @DATName = (@Qchar + @DPath + @DBName +'_dat.mdf' + @Qchar)
    SET @LOGName = (@Qchar + @DPath + @DBName +'_log.ldf' + @Qchar)
    SET @FSName =  (@Qchar + @DPath + @DBName + '_fs' + @Qchar)
SET @CreateSdb =('CREATE DATABASE ' + @DBName + ' ON PRIMARY (NAME = ' + @DBName1 + ', FILENAME = ' + @DATName + '), FILEGROUP ' + @FileGroupN + ' CONTAINS FILESTREAM (NAME = ' + @DBNamefs + ', FILENAME = ' + @FSName + ') LOG ON (NAME = ' + @DBNamelog + ', FILENAME = ' + @LOGName + ')')
    SET @Statement = '   '
BEGIN_CATCH:
SELECT ERROR_MESSAGE() as ErrorMessage;
SELECT @ErrMsg = ERROR_MESSAGE()

EXEC master.sys.sp_executesql @CreateSdb, @Statement

RAISERROR (@ErrMsg,1,1)
RETURN 0 
END_CATCH:
END_TRY: 

到目前为止,一切正常,直到远程服务器尝试为流数据库创建必要的文件

然后他给出了以下错误:

无法打开物理文件“C:\ sqlDATA \ RemoteDB_fs”。操作系统错误-2147024891:“0x80070005(访问被拒绝。)”。


驱动器C:\的名称位于远程计算机上(与Windows Server 2003在同一网络中靠近我的计算机;稍后我将为我的ISP计算机运行程序) 子文件夹sqlDATA \已经在那里我手动创建它应该是。 在我的本地机器上,所有包都工作正常,DATA BASE创建正常,但是当我使用远程服务器时问题就开始了。

现在我需要帮助:

为什么我收到此错误?

2 个答案:

答案 0 :(得分:3)

SQL Server服务帐户没有C:\ SQLData

的权限

答案 1 :(得分:0)

正如@gbn所解释的那样:

  • C:\sqlDATA目录必须存在。
  • 文件流\RemoteDB_fs子目录不得存在。