SQL语句 ( 积分: 50 )

  • 主题发起人 主题发起人 jialiguo
  • 开始时间 开始时间
J

jialiguo

Unregistered / Unconfirmed
GUEST, unregistred user!
use master
IF not EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'ba2004')
begin
CREATE DATABASE [ba2004]
ON (NAME = N'ba2004_Data', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL/data/ba2004_Data.MDF' , SIZE = 16, FILEGROWTH = 10%)
LOG ON (NAME = N'ba2004_Log', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL/data/ba2004_Log.LDF' , SIZE = 56, FILEGROWTH = 10%)
COLLATE Chinese_PRC_CI_AS
end;
RESTORE DATABASE ba2004 FROM DISK = 'D:/巡逻备份数据/BAK5BA2004.BAR'
go
use master '
+'IF not EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'''+Bname+''') '
+' begin '
+' CREATE DATABASE '''+Bname+''' '
+' ON (NAME = N'''+Bname+'_Data'+''', FILENAME = N'''+'C:/Program Files/Microsoft SQL Server/MSSQL/data/ba2004_Data.MDF'+''' , SIZE = 16, FILEGROWTH = 10%) '
+' LOG ON (NAME = N'''+Bname+'_Log'+''', FILENAME = N'''+'C:/Program Files/Microsoft SQL Server/MSSQL/data/ba2004_Log.LDF'+''' , SIZE = 56, FILEGROWTH = 10%) '
+' COLLATE Chinese_PRC_CI_AS '
+' end; '
+' RESTORE DATABASE '''+Bname+''' FROM DISK = '''+dir_B+Bname+'.BAR'+'''';
2种写法,一个是死的,一个是活的,活的报错,错在哪?
 
你的意思是死的正常,活的报错?

跟踪过活的那个的sqlstring? 是不是一样?

报什么错?
 
只看出这里 有点不一样:
RESTORE DATABASE ba2004 FR...

' RESTORE DATABASE '''+Bname+''' FROM DISK
-->>' RESTORE DATABASE '+Bname+' FROM DISK

多了引号。
 
报语法错误
 
use master '
+'IF not EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'''+Bname+''') '

不知道是不是楼主复制错了,这一句就有问题
'+单引号连接符是不能一起用的
 
楼上,单引号可以连着的,要不怎么显示单引号啊。

LZ,问题解决了没有?应该你的语法里面把有些变量给混进去吧?如果确实还是找不出,建议你把所有变量的地方都用一个正确的常量直接写到语句中,然后再一个一个替换回来,很容易找出问题的。
 
引号是要成对后才能连接
 
同意,你说的那句话有8个,是偶数啊。
 
多人接受答案了。
 
后退
顶部