C#實現(xiàn)SQL 2005數(shù)據(jù)庫遠(yuǎn)程連接代碼
C#實現(xiàn)SQL 2005數(shù)據(jù)庫遠(yuǎn)程連接代碼?
1. 首先檢查下 SQL Server的相關(guān)服務(wù)開啟沒有
2. 如果開啟了,還是不行,那么再檢查 MSSQL 2005?外圍應(yīng)用配置器??里是否開啟了遠(yuǎn)程連接
3.首先確定你的服務(wù)器端的computer Browser是否已經(jīng)啟動了,如果沒有啟動的話,把它啟動了,同時關(guān)掉服務(wù)器端的防火墻。(可以通過"控制面板"-"管理工具"-"服務(wù)"-"computer Browser"方式找到)
4.對SQL Server2005進行設(shè)置:
①???????? 打開"Microsoft SQL Server Management Studio" 直接用Windows 用戶連接進入,再在"安全性"中的"登錄名"內(nèi)的"新建登錄名",你就對應(yīng)的添好"確定"就可以了。
②???????? 再在你對應(yīng)的"數(shù)據(jù)庫"里"安全性"用戶,把你建的用戶添加進去。
③???????? 查看"服務(wù)器 屬性"在 "安全性"選上 "SQL Server 和 Windows 身份驗證模式"點 "確定"系統(tǒng)會提示你重新啟動SQL Server 你"停止"重啟一下就配好了。
6. 開始-Micorsoft Sql Server-配置工具-SQL Server Configuration Manager
選中SQL Server 2005網(wǎng)絡(luò)配置-選擇要開啟遠(yuǎn)程連接的數(shù)據(jù)庫服務(wù)器(如MSSQLSERVER的協(xié)議)-在右側(cè)選擇Tcp/Ip協(xié)議-雙擊-在協(xié)議選項卡下把已啟用改為:是,切換到IP地址選項卡-(IP1設(shè)置)把活動和已啟用都改為:是,并檢查一下TCP端口是否為1433。(IPAll設(shè)置)Tcp動態(tài)端口保留默認(rèn)(下圖來自網(wǎng)上,但用它的設(shè)置,反而服務(wù)器都無法啟動成功,在將 TCP動態(tài)端口還原為默認(rèn)值后,啟動成功)
設(shè)置好后,重啟服務(wù)器
6. 打開防火墻-例外-添加程序-瀏覽-C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBinnsqlservr.exe;C:Program FilesMicrosoft SQL Server90Sharedsqlbrowser.exe;C:Program FilesMicrosoft SQL Server90Sharedsqlwriter.exe
7. 在運行中輸入CMD,再在DOS窗口輸入?telnet 你的IP 1433
如果連接成功 出現(xiàn) 黑色 窗口,沒有任何字
不成功,就顯示 無法連接/連接不成功,不成功,請返回第5步檢查
8. 回到程序,在你的程序里設(shè)置好數(shù)據(jù)庫的IP地址,剛才設(shè)置的 sa賬戶,和密碼,再次用程序連接,成功!
另外:我同學(xué)的機器還出現(xiàn)了其他毛病,自己再電腦上可以連接了,但當(dāng)把程序移到另外的局域網(wǎng)中的一臺機器時就不行了,發(fā)現(xiàn)本機可以Ping通局域網(wǎng)中其他機器,而其他主機卻無法ping通 本機,解決方法如下:
關(guān)閉360安全衛(wèi)士,系統(tǒng)自帶防火墻等其他任何防火墻即可。
如果不想關(guān)閉防火墻,也希望能夠Ping通,這個我沒有能力試,因為一直都是遠(yuǎn)程協(xié)助,但你可以找下防火墻里是否有一些可以設(shè)置的。
9.C#的連接語句:
??? strcon = strcon + @"Data Source=" + strcons[0];
??? strcon = strcon + "," + strcons[2] + ";";
??? strcon = strcon + "Network Library=" + strcons[1] + ";";
??? strcon = strcon + "Initial Catalog=" + strcons[3] + ";";
??? strcon = strcon + "User ID=" + strcons[4] + ";";
??? strcon = strcon + "Password=" + strcons[5] + ";";
??? strcon = strcon + "Persist Security Info=True";
??? strcons[0] 服務(wù)器名稱,一般添機器的IP
??? strcons[1]協(xié)議DBMSSOCN(為tcp/ip協(xié)議),在strcons[1] 可以直接填"DBMSSOCN"就可以了
??? strcons[2]]端口號,一般為1433
??? strcons[3] 數(shù)據(jù)庫名
??? strcons[4] 用戶名
??? strcons[5]密碼
??? 代碼
???
??????? string strcon;
??????? private void button1_Click(object sender, EventArgs e)
??????? {
?????????? // strcon = strcon + @"Data Source=" + "192.168.1.100";
??????????? strcon = strcon + @"Server=192.168.1.100";
??????????? strcon = strcon + "," + "1433" + ";";
??????????? strcon = strcon + "Network Library=" + "DBMSSOCN" + ";";
??????????? strcon = strcon + "Initial Catalog=" + "longma" + ";";
??????????? strcon = strcon + "User ID=" + "sa" + ";";
??????????? strcon = strcon + "Password=" + "Jacklove13" + ";";
??????????? strcon = strcon + "Persist Security Info=True";
???????????
??????????? try
??????????? {
??????????????? //strcon += "Connect Timeout=30";
??????????????? SqlConnection conn = new SqlConnection(strcon);
??????????????? conn.Open();
??????????????? if (conn.State == ConnectionState.Open)
??????????????? {
??????????????????? MessageBox.Show("連接成功!");
??????????????? }
??????????????? else
??????????????? {
??????????????????? MessageBox.Show("連接不上");
??????????????? }
??????????????? string strnum = "Select * from longma";
??????????????? DataSet ds = new DataSet();
??????????????? SqlDataAdapter adapter = new SqlDataAdapter(strnum, conn);
??????????????? adapter.Fill(ds, "longma");
??????????????? dataGridView1.DataSource = ds.Tables["longma"];
??????????????? conn.Close();
??????????? }
??????????? catch (Exception ex)
??????????? {
??????????????? MessageBox.Show(ex.Message,"出錯所在地:");
??????????? }???????????
??????? }
?