我正在创建一个tsql过程,将一个数据库中的所有视图重新创建到不同的dtabase上。我收到错误“+附近的语法不正确”当我查看代码虽然语法对我来说是正确的。谁能告诉我这个查询有什么问题?
USE [SOURCEDB]
BEGIN
DECLARE @SQL NVARCHAR(MAX)
DECLARE CUR_V CURSOR FOR
SELECT sc.text
FROM sys.views av
JOIN sys.syscomments sc ON sc.id = av.object_id
OPEN CUR_V
FETCH NEXT FROM CUR_V INTO @SQL
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC sp_executesql N'USE [DESTINATIONDB] EXEC sp_executesql ' + @SQL + ''
FETCH NEXT FROM CUR_V INTO @SQL END CLOSE CUR_V DEALLOCATE CUR_V END
提前致谢
答案 0 :(得分:1)
您不能在与sp_executesql
declare @sql nvarchar(1000)
select @sql = N'USE [DESTINATIONDB] EXEC sp_executesql ' + @SQL + ''
exec sp_executesql @sql
或者你的意思是
select @sql = N'USE [DESTINATIONDB] EXEC sp_executesql N''' + @SQL + ''''