標籤:style blog http io os 使用 ar strong 資料
SQL Server伺服器名稱與預設執行個體名不一致的修複方法分類: 個人累積 SQl SERVER 資料庫複寫2011-08-10 09:49 10157人閱讀 評論(0) 收藏 舉報sql server伺服器sqlservermicrosoftserver遠端連線
[sql] view plaincopy
- --原因分析:
- --SERVERPROPERTY 函數的 ServerName 屬性與@@SERVERNAME 返回相似的資訊。
- --ServerName 屬性提供Windows 伺服器和執行個體名稱,兩者共同構成唯一的伺服器執行個體;
- [email protected]@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 @[email protected]@servername
- EXEC sp_dropserver @[email protected]
- SET @server=cast(serverproperty(‘servername‘) AS SYSNAME)
- EXEC sp_addserver @[email protected],@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,這樣基本上都可以解決了
- 上一篇如何刪除發行伺服器distribution
- 下一篇timestamp應用(解決並發問題)——樂觀鎖和悲觀鎖【轉】
SQL Server伺服器名稱與預設執行個體名不一致的修複方法