Скрипт Sql - Неверный синтаксический ошибка - PullRequest
0 голосов
/ 19 мая 2011

Когда я выполнил следующий скрипт, я получаю следующую ошибку. Что я должен сделать, чтобы исправить эту проблему?

Error

Msg 102, Level 15, State 1, Line 9
Incorrect syntax near '@path'.

Сценарий

GO
declare @path varchar(2000)
declare @path1 varchar(2000)
select @path=(SELECT [filename] FROM master..sysdatabases WHERE [name] LIKE 'master')
set @path= REPLACE(@path, 'master', 'test')
set @path1= REPLACE(@path, 'test.mdf', 'test_log.ldf')
select @path
select @path1
CREATE DATABASE [test] ON 
( FILENAME = @path ),
( FILENAME =N'D:\Program Files (x86)\Microsoft SQL Server\MSSQL.3\MSSQL\DATA\test_log.ldf' )
 FOR ATTACH
GO

Ответы [ 2 ]

3 голосов
/ 19 мая 2011

Заменить

CREATE DATABASE [test] ON 
( FILENAME = @path ),
( FILENAME =N'D:\Program Files (x86)\Microsoft SQL Server\MSSQL.3\MSSQL\DATA\test_log.ldf' )
 FOR ATTACH

с

DECLARE @sql nvarchar(400);
SET @sql = '
CREATE DATABASE [test] ON 
( FILENAME = ' + quotename(@path,'''') + ' ),
( FILENAME =N' + quotename(@path1,'''') + ' )
 FOR ATTACH
'
EXECUTE sp_executesql @sql;
1 голос
/ 19 мая 2011

Вы не на самом деле читаете настроенный каталог данных по умолчанию - вы просто читаете каталог, в котором находится база данных master (и это не обязательно должен быть настроенный каталог по умолчанию дляфайлы данных).

Если вы действительно хотите узнать настоящий каталог - вам нужно заглянуть в реестр.См. сообщение в блоге здесь, на SQL Server Central , чтобы узнать все подробности ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...