我們是在從Windows Server 2003切換到Windows Server 2008的過程中,我們遇到了一個令人沮喪的問題:SQL Server 2008中解決本地主機的計算機名
舊環境中,使用一些開發商SQL Server 2005和其他人使用SQL Server 2008.沒有問題。我們的連接字符串都指向:localhost/sqlserver。現在,在新的Server 2008環境中,Sql Server 2008偶爾會解析「localhost」,這會立即導致事件拋出異常。
在sys.servers我們已經改變了條目指向使用到localhost/SQLSERVER:
exec sp_dropserver 'buckaroo-banzai\sqlserver'
exec sp_addserver 'localhost\sqlserver', local
exec sp_serveroption 'localhost\sqlserver', 'data access', TRUE
和最常見的違規SQL語句看起來像這樣(我知道這是過時的形式)(注:他們是不是唯一的罪犯,只是最常見的):
[localhost\sqlserver].[database].[table].exec sp_executesql blahblah; exec sp_another_sp
我從這些得到的錯誤是:
Server buckaroo-bonzai\sqlserver not found in sys.servers
切換我sys.servers進入回牧童,bonzai \ SQLSERVER得到這個錯誤:
Server localhost-bonzai\sqlserver not found in sys.servers
如果一切指SQL Server作爲牧童,bonzai \ SQLSERVER一切正常,但對於發展,這只是不是一種選擇。對於這種記錄,在我們的Windows Server 2003環境中,這只是新的服務器2008環境;有任何想法嗎?
我想過的可能的解決方法:
- 刪除版本控制(yech)
- 費力地在app.config和web.config文件中保持不同的連接字符串中的版本控制文件(雙yech)
- 版本控制文件,但不知何故有一些統一的方式來引用本地主機上的sql服務器(localhost也許?)=)
- 實際上找出爲什麼sql server 2008解決localhost並阻止它死了。 (耶!)
這些是真的嗎?: - 連接字符串是指localhost。聯繫到DB工作。 - 運行引用localhost的SQL語句不起作用。 如果這是正確的,你可以刪除「[localhost \ sqlserver]」。從SQL腳本(即讓服務器名稱隱含)?我知道這不會找到問題的根源。 – apollodude217