Создание Stream DATABASE на удаленном сервере - PullRequest
0 голосов
/ 21 декабря 2009

С помощью очень хорошего человека с этого форума (г-н 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; позже я запусту программу для своего компьютера провайдера) подпапка sqlDATA \ уже есть, я создал ее вручную, как и должно быть. На моей локальной машине все пакеты работают нормально, а база данных создана нормально, но проблема начинается, когда я использую удаленный сервер.

СЕЙЧАС НУЖНА ПОМОЩЬ:

Почему я получаю эту ОШИБКУ?

Ответы [ 2 ]

3 голосов
/ 21 декабря 2009

У учетной записи службы SQL Server нет прав на C: \ SQLData

0 голосов
/ 21 декабря 2009

Как объяснил @gbn, а также:

  • C:\sqlDATA каталог должен существовать.
  • Подкаталог \RemoteDB_fs для файлового потока не должен существовать .
...