2015-11-04 56 views
1

我有一個在SQL Server 2008R2中正常工作的腳本,但它無法在SQL Server 2005中工作。有什麼方法可以同時適用於這兩個版本嗎?如何在SQL Server 2005中使用動態SQL來更改登錄名

謝謝!

declare @SQL nvarchar(max) = '' 

select @SQL = @SQL + 'ALTER LOGIN ' + QUOTENAME(DisabledName) + ' DISABLE;' 
from [SysAdmin].[dbo].[DisabledAccountHistory] 
where DisabledName in (select name 
         from sys.server_principals 
         where is_disabled = 0) 
group by DisabledName 

exec sp_executesql @SQL 
+0

它給你什麼錯誤? – Neta

+0

消息139,級別15,狀態1,行0 無法將默認值分配給本地變量。 消息137,級別15,狀態2,行3 必須聲明標量變量「@SQL」。 Msg 156,Level 15,State 1,Line 6 關鍵字'group'附近的語法不正確。 消息137,級別15,狀態2,行8 必須聲明標量變量「@SQL」。 @Neta – Jack

回答

0

聲明,包括在同一行的初始值的分配是在SQL Server 2008中的新功能 - 你不能你行做到這一點在2005年

更改爲:

declare @SQL nvarchar(max) 
set @SQL = N''