谢谢你查看我的帖子。我试图在sql server中的所有数据库上运行一个查询,但是如果数据库包含空间并且数据库处于联机状态,则光标不会提取。
代码
DECLARE @tsql nvarchar(max)
DECLARE @dbname nvarchar(max)
DECLARE MyCur CURSOR STATIC FORWARD_ONLY FOR
SELECT [name]
FROM sys.databases
-- WHERE [name] NOT IN ('tempdb','Managed Metadata Service_9393')
--and state_desc='ONLINE'
OPEN MyCur
WHILE (1=1)
BEGIN
FETCH NEXT FROM MyCur INTO @dbname
IF @@FETCH_STATUS <> 0
BREAK
SET @tsql = 'use ' + @dbname + ' select @@servername'
EXEC sp_executesql @tsql
END
CLOSE MyCur;
DEALLOCATE MyCur;
错误
Msg 911, Level 16, State 1, Line 1
Database 'Managed' does not exist. Make sure that the name is entered correctly.
1条答案
按热度按时间u7up0aaq1#
分隔标识对象的名称。一般来说就是用括号括起来(
[]
)但是,由于这似乎是动态sql,您应该使用QUOTENAME
:但是,理想情况下,不要使用要求您对对象进行分隔和标识的对象名。