--原因分析:--SERVERPROPERTY 函數的 ServerName 屬性與@@SERVERNAME 返回相似的資訊。--ServerName 屬性提供Windows 伺服器和執行個體名稱,兩者共同構成唯一的伺服器執行個體;--@@SERVERNAME 提供當前配置的本機伺服器名稱。--如果安裝時未更改預設伺服器名稱,則 ServerName 屬性和 @@SERVERNAME 返回相同的資訊。如果在安裝時已將本機伺服器名稱從預設伺服器名稱更改為其他名稱,則 @@SERVERNAME 返回更改後的新名稱。--如果安裝時未更改預設伺服器名稱,但是安裝完成後更改過Windows 伺服器名稱,則@@SERVERNAME仍然返回安裝時的伺服器名稱,ServerName 屬性返回更改過後的Windows 伺服器名稱。也就是說,@@SERVERNAME不會報告Windows 伺服器名稱的更改,ServerName 屬性會報告Windows 伺服器名稱的更改。這就會造成SQL Server預設執行個體的@@SERVERNAME和ServerName 屬性不一致。這種情況在一些應用中常常會出現無法串連的問題,有時我們需要修複這種情況。--修複方法:(修複方法很簡單,直接執行以下語句即可)use master go select @@servername select serverproperty('servername')------ IF serverproperty('servername')<>@@servername BEGIN DECLARE @server SYSNAME SET @server=@@servername EXEC sp_dropserver @server=@server SET @server=cast(serverproperty('servername') AS SYSNAME) EXEC sp_addserver @server=@server,@local='LOCAL' END ELSE PRINT '執行個體名與主機名稱一致,無需修改!'
若,安裝SQL之後 伺服器修改主機名稱,造成不一致,且之前有存在複製發布:
機器名與執行個體名不同,解決辦法
在執行 exec sp_addlinkedserver
'DMGZSRV10' 的時候一直提示
訊息 15190,層級 16,狀態 1,過程 sp_dropserver,第 56 行
仍有對伺服器 'DMGZSRV10' 的遠程登入或連結登入。
又執行
exec sp_dropserver 'DMGZSRV10', 'droplogins'
這時提示
無法刪除伺服器 'LC04',因為該伺服器用作複製過程中的發行伺服器。 (Microsoft SQL Server,錯誤: 20582)
下面是解決的方案
原始狀態
1、伺服器名LC04 MSSQL執行個體名MSSQLSERVER
2、在LC04上建立了發布,在另一台伺服器上訂閱或者用SQLServer管理器遠端存取LC04上的SQLServer,出現錯誤:
無法串連到 LC04。
-----------------------------
其他資訊:
在建立與伺服器的串連時出錯。在串連到 SQL Server 2005 時,在預設的設定下 SQL Server 不允許進行遠端連線可能會導致此失敗。 (provider: 具名管道提供者, error: 40 - 無法開啟到 SQL Server 的串連) (Microsoft SQL Server,錯誤: 53)
解決處理
將LC04的電腦名稱改為MSSQLSERVER與MSSQL執行個體名相同
此時狀態
SQLServer管理器遠程可以訪問LC04的資料庫,但不能訂閱,出現錯誤:
SQL Server 複製需要有實際的伺服器名稱才能串連到伺服器。不支援通過伺服器別名、IP 位址或任何其他備用名稱進行串連。請指定實際的伺服器名稱“LC04”。 (Replication.Utilities)
解決處理
在LC04(現在應當名為MSSQLSERVER)的伺服器上,執行如下代碼
SELECT @@SERVERNAME ,serverproperty('servername')
發現兩個不同,分別為LC04和MSSQLSERVER
執行如下代碼
exec sp_droplinkedsrvlogin 'LC04',null
exec sp_dropserver 'LC04','droplogins'
exec sp_addserver 'MSSQLSERVER' , 'LOCAL'
出現錯誤
無法刪除伺服器 'LC04',因為該伺服器用作複製過程中的發行伺服器。 (Microsoft SQL Server,錯誤: 20582)
解決處理
select * from msdb.dbo.MSdistpublishers
DELETE FROM msdb.dbo.MSdistpublishers
select * from msdb.dbo.MSdistpublishers
exec sp_droplinkedsrvlogin 'LC04',null
exec sp_dropserver 'LC04','droplogins'
exec sp_addserver 'MSSQLSERVER' , 'LOCAL'
重啟SQLServer服務
設定發行伺服器屬性,發現發行伺服器的伺服器名還是為LC04,造成發布執行錯誤:
在建立與伺服器的串連時出錯。在串連到 SQL Server 2005 時,在預設的設定下 SQL Server 不允許進行遠端連線可能會導致此失敗。 (provider: 具名管道提供者, error: 40 - 無法開啟到 SQL Server 的串連) (Microsoft SQL Server,錯誤: 53)
使用 exec sp_helpserver
發現name為repl_distributor的伺服器的network_name還是LC04
解決處理
執行exec sp_setnetname 'repl_distributor','MSSQLSERVER'
再次設定發行伺服器,並發布,完成
實際上在SQLServer和其他應用中還有可能用到原有的資料庫名LC04
可以建立SQLServer的新別名為LC04,這樣基本上都可以解決了