問題一、忘記了登錄Microsoft SQL Server 2005 的sa的登錄密碼
解決方法:先用windows身份驗證的方式登錄進去,然後在‘安全性’-‘登錄’-右鍵單擊‘sa’-‘屬性’,修改密碼點擊確定就可以了。
問題二、已成功與服務器建立連接,但是在登錄過程中發生錯取。(provider:共享內存提供程序,error:0-管道的另一端上無任何進程。)(Microsoft SQL Server,錯誤:233)
解決方法:打開‘程序’-‘所有程序’-‘Microsoft SQL Server 2005 ’-‘配置工具’-‘SQL Server 配置管理器’,在彈出的窗體中,找到‘SQL Server 2005 網絡配置’,把‘MSSQLSERVER的協議’下的“Named Pipes”和“TCP/IP”啓動,然後重新啓動Microsoft SQL Server 2005就可以了。
問題三、無法打開用戶默認數據庫。登錄失敗。用戶‘sa’登錄失敗。(Microsoft SQL Server, 錯誤:4064)
解決方法:先用windows身份驗證的方式登錄進去,然後在‘安全性’-‘登錄’-右鍵單擊‘sa’-‘屬性’,將默認數據庫設置成master,點擊確定就可以了。
這時還是不行,後來才知道一個最暈的問題,服務器名是“計算機/實例名”,FFC50E78A6DF423/server2005 這次全好了,呵呵。
二、升級到2005時出現18456問題的解決方法
在幫一個用戶進行系統從Sql2000升級到Sql2005的過程中,遇到了幾個問題,因前段時間同時忙於幾個項目,沒能及時把問題解決方法整理下來。這段時間有些輕鬆了,更新一下我的blog希望能幫助朋友們解決實踐中的問題。
問題描述:
在升級Sql2000的DTS包的時候,試着手工執行了幾次,突然系統報18456錯誤,提示信息是“無法連接到×××服務器”,其他信息爲“用戶‘sa’登錄失敗。(Microsoft SQL Server,錯誤:18456)”。
問題原因:
升級Sql2000的DTS包是這次數據庫系統整體升級的一部分。除此之外,系統硬件進行了升級,新升級的系統服務器加入到了用戶機構的域中,並更改了數據庫sa的用戶口令。
原DTS的數據包是保存了原Sql2000數據庫庫系統的用戶憑據,口令自然是原先的數據庫口令。在試運行DTS包之前服務器管理員剛剛把新升級成功的數據庫服務器加入域。
用戶機構的域是設置了“密碼策略”。Sql Server 2005的sa用戶默認是啓用了“強制實施密碼策略”。而一般默認的Windows帳戶密碼策略或者AD(域帳戶)密碼策略都是3-6次錯誤口令登陸失敗後,系統暫時凍結該用戶。凍結的時間要看系統設定的長短。
該問題就出在DTS用錯誤的sa口令(舊的sa口令)多次試圖訪問系統,而sa的“強制實施密碼策略”起了作用。
圖解:
sa帳戶被鎖定,原因是sa的帳戶啓用了“強制實施祕密策略”,或者“強制過期”。在登錄用戶sa的登錄屬性對話框中,能看到改選項是否選定狀態。如下圖所示:
選中“強制實施祕密策略”後,sql server2005 會調用windows或者域的帳戶管理策略。如果是windows的帳號管理策略,可以通過“控制面板”的“本地安全設置”中看到“帳戶策略”情況,其中的“密碼策略”可以設置用戶祕密的失效時間、長短等,另外在“帳戶鎖定策略”可以設置“帳戶鎖定閾值”,即帳戶用錯誤的口令嘗試登錄幾次,系統即自動鎖定該帳戶。可以參考上圖。
如果sql server的帳號已經被鎖定,在該帳戶的登錄屬性裏面能看到所示的sql server帳戶被鎖定。
隔一定時間後,遇到的問題是因爲,舊有的DTS包中設置的鏈接還是舊數據庫的sa口令,當多次測試執行該DTS時,已經超過了嘗試sa錯誤口令的次數,造成了所示的sql server帳戶被鎖定。
這是即使用集成windows的帳戶登錄sql server,取消“登錄已鎖定”的勾選。再重新用sa的正確口令登錄sql server時,也會出現18456的錯誤。如圖所示。這是因爲sa的口令需要重新設置。再次用集成windows的帳戶登錄sql server的帳戶登錄sql server進行sa的密碼重新設置,即可解決問題。
總結:
第一,如果數據庫安全性沒有特殊的要求,去掉圖所示的“強制實施祕密策略”勾選,能避免該類問題的發生。
第二,從舊系統數據庫升級上來的DTS,儘快修改舊鏈接的sa登錄口令,保證系統帳戶登錄認證不會出問題,同時保證DTS能正確執行。
三、SQL Server 2005 連接本地端口1433開啓遠程連接
剛裝的SQL server2005數據庫,默認是關閉遠程連接。安裝完成後一般無法直接連接端口1433,此時連接一般會失敗。 現在把在裝完程序後,連接端口1433前,要做的幾件事情和注意事項總結一下。
開啓步驟:
1.關閉數據庫引擎,關閉數據庫引擎有三種方法:
開始->程序->Microsoft SQL Server 2005->配置工具->SQL Server Configuration Manager,選中SQL Server 2005服務中SQL Server(MSSQLSERVER) ,並選中右擊,點擊停止, 即可關閉數據庫引擎。
補充注意點:
有時候在啓動數據庫引擎的時候可能會出現錯誤,不能啓動,這時就要查看"SQL Server 2005配置管理器"中的SQL Server 2005網絡配置->MSSQLSERVER協議中的VIA是否已啓用,如果已啓用,則把它禁止.然後再執行上述一種方式操作就可以了.
2.配置服務器端和客戶端的TCP/IP協議:
配置工具->SQL Server Configuration Manager->MSSQLSERVER的協議
看看TCP/IP協議是否啓動,如果啓動,右鍵菜單點"屬性" ,在分頁菜單中選"IP地址",把"IP1"和"IP2"中"TCP端口"爲1433,"已啓用"改爲"是"
修改SQL Server的TCP/IP下端口設置,雙擊“SQL2005的協議”下“TCP/IP”,把“IP地址”下“IPALL”的端口都改爲“1433”。
配置工具->SQL Server Configuration Manager->SQL Native Client 配置->客戶端協議->TCP/IP
選擇TCP/IP右鍵菜單中"屬性",確認"默認端口"是1433,"已啓用"爲"是"
3.開啓數據庫引擎
4.連接端口1433
開始–>輸入cmd –>回車–>telnet localhost 1433->回車
出現黑屏,表示本機連接端口1433成功 。
正確的順序是:(1)關數據庫引擎,
(2)配置服務器端和客戶端的TCP/IP協議,
(3)啓動數據庫引擎,
(4)連接端口1433。
近日碰到一問題,程序無法查找到sqlserver的1433端口,sqlserver的網絡實用工具裏配置的沒錯,但是的確找不到,在命令提示符裏輸入:netstat -na ,一樣看不到這個端口,重啓sqlserver服務也不行,不知道咋回事,後來再一次重啓,突然間可以……
程序使用JDBC方式訪問SQL Server 2005
SqlServer端口:1433,1434
要訪問SqlServer,可以使用JDBC方式訪問。
driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=;DatabaseName=maxwell"
這段時間要使用sqlserver,偶望文生義,以爲在防火牆打開1433端口即可,誰知只打開這個端口怎麼都不行,後來Google一下,才知道,還需要一個端口,留作筆記。
TCP-1433
UDP-1434
SQLSERVER端口是如何被ADO找到的?
問題:
把SQLSERVER的端口設置成1499,然後在程序中定義ADO的連接字符串:DRIVER={SQL Server};SERVER=127.0.0.1,1499,能夠聯接上去,如果是DRIVER={SQL Server};SERVER=127.0.0.1,1433,就聯接不上去,問題是如果我定義成:DRIVER={SQL Server};SERVER=127.0.0.1 不加端口,也可以聯接上去,ADO是怎麼得到SQLSERVER的端口的呢?
回答:
客戶端連接到服務器時,應用程序請求連接遠端計算機,dbnetlib.dll 將打開到連接中所指定的計算機網絡名上的 UDP 端口 1434 的連接。所有運行 SQL Server 2000 的計算機都監聽此端口。當一個客戶端 dbnetlib.dll 連接到該端口時,服務器將返回一個監聽服務器上運行的所有實例的數據包。對於每個實例,該數據包報告該實例正在監聽的服務器 Net-Library 和網絡地址。應用程序計算機上的 dbnetlib.dll 收到該數據包後,選擇在應用程序計算機和 SQL Server 實例上都啓用的 Net-Library,然後連接爲此數據包中的 Net-Library 列出的地址。
通過1434端口傳輸特定的UDP數據包,然後服務器開始迴應,所有這些都是明文傳輸的,我們可以很容易探測一個IP地址的1434端口,獲得該IP地址上運行的SQL Server的相關信息。這些信息包括:主機名稱、實例名稱、版本、管道名稱以及使用的端口等。這個端口是微軟自己使用,而且不象默認的1433端口那樣可以改變,1434是不能改變的
另外:以後遇到此問題,可以使用冰刃工具查看操作系統各個端口的使用,還可以查看sqlserver的系統日誌。