SQL Server 2000 + 2005 + 2008 + 2008R2,完全可以共存,注意區別連接字符串寫法

實踐證明,SQL Server 2000 + 2005 + 2008,完全可以共存,注意區別

(1)只要實例名不同即可(如:默認實例、命名實例SQL2005、命名實例SQL2008)。 
(2)2005 與 2008要求的 .NET Framework 版本不一樣,2005 要求 2.0,而 2008 要求 3.5 SP1; 
(3)特別要注意的是,安裝 SQL2008 的機器上如果安裝過開發工具 Visual Studio 2008, 
    則必須先安裝 VS2008 SP1 補丁包(相當耗時但是必須的),否則壓根就不讓你繼續裝。 
(4)SQL2008真是爽啊,語法智能感知,Management Studio 速度也快了許多,……。 
----------------------------------------------- 

關於sql server2000和2005版本共存問題,有經驗的來看下

本機上裝了sql server2000 後來又裝了2005
兩個版本的實例名不同,假設2000的實例名是sql2000  05版本是的sql2005
連接字符串怎麼寫?
<add key="SqlConnStr" value="Provider=SQLOLEDB;Server=127.0.0.1;Database=sz;Uid=sa;Pwd=;Pooling=true;Max Pool Size=25;Min Pool Size=5"/>

這是我的寫法,程序登錄不了
兩個版本的數據庫都可以正常建表建庫,就是連不上程序

還有我用2000的查詢分析器連接2005的數據庫,連接時用實例名和。和local還有127.0.0.1都顯示不存在或訪問被拒絕
問題補充:
<add key="SqlConnStr" value="Provider=SQLOLEDB;Server=服務器id;Database=sz;Uid=sa;Pwd=;Pooling=true;Max Pool Size=25;Min Pool Size=5"/>
這是原先的鏈接,公司服務器上是2005版本,本機是2000版本,鏈接時除了ip改動外,其他不變,登錄正常如果認爲是這個連接有問題,麻煩幫忙寫下連接字符串另外我認爲如果2000的查詢分析器 或別的機器能連上我本機2005的數據庫的話,應該就可以了但是都顯示 不存在或訪問被拒絕(是允許混合登錄的)
【解決方案】,結果公佈下,希望以後又兄弟碰到可以借鑑下
原因是server=後面要用 .\實例名


獲取本機所在域的SQL Server實例名:

            SqlDataSourceEnumerator sqldatasourceenumerator1 = SqlDataSourceEnumerator.Instance;
            DataTable datatable1 = sqldatasourceenumerator1.GetDataSources();
            foreach (DataRow row in datatable1.Rows)
            {
                Console.WriteLine("****************************************");
                Console.WriteLine("服務器:" + row["ServerName"]);
                Console.WriteLine("實例名::" + row["InstanceName"]);
                Console.WriteLine("聚  集:" + row["IsClustered"]);
                Console.WriteLine("版本號:" + row["Version"]);
                Console.WriteLine("****************************************\n");
            }

            Console.ReadLine();



其他可用方法
1、服務—SQL Server(實例名),默認實例爲(MSSQLSERVER)

或在連接企業管理時-查看本地實例 

2、通過註冊表
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SQL Server/InstalledInstance

3、用命令

sqlcmd/osql
sqlcmd -L
sqlcmd -Lc
osql -L

獲取可用實例名,,以下舉一個例子,請根據需要自行修改:

DECLARE @Table TABLE ( instanceName  sysname NULL)
insert @Table EXEC sys.xp_cmdshell 'sqlcmd -Lc'
--LEFT(@@serverName,CHARINDEX('/',@@serverName+'/')-1) 替代為本機名就行了 , 根據實例命名規則判斷
SELECT * FROM @Table WHERE instanceName LIKE   LEFT( @@serverName , CHARINDEX ( '/' , @@serverName + '/' )- 1)+ '%'



發佈了20 篇原創文章 · 獲贊 104 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章