一看ping 服務器IP能否ping通.
這個實際上是看和遠程sql server 2000服務器的物理連接是否存在。如果不行,請檢查網絡,查看配置,當然得確保遠程sql server 2000服務器的IP拼寫正確.
二 在Dos或命令行下輸入telnet 服務器IP 端口,看能否連通。
如telnet 202.114.100.100 1433
通常端口值是1433,因為1433是sql server 2000的對于Tcp/IP的默認偵聽端口。如果有問題,通常這一步會出問題。通常的提示是“……無法打開連接,連接失敗"。如果這一步有問題,應該檢查以下選項.
1 檢查遠程服務器是否啟動了sql server 2000服務。如果沒有,則啟動。
2 檢查服務器端有沒啟用Tcp/IP協議,因為遠程連接(通過因特網)需要靠這個協議。檢查方法是,在服務器上打開 開始菜單->程序->Microsoft SQL Server->服務器網絡實用工具,看啟用的協議里是否有tcp/ip協議,如果沒有,則啟用它。
3 檢查服務器的tcp/ip端口是否配置為1433端口。仍然在服務器網絡實用工具里查看啟用協議里面的tcp/ip的屬性,確保默認端口為1433,并且隱藏服務器復選框沒有勾上。
事實上,如果默認端口被修改,也是可以的,但是在客戶端做telnet測試時,寫服務器端口號時必須與服務器配置的端口號保持一致。如果隱藏服務器復選框被勾選,則意味著客戶端無法通過枚舉服務器來看到這臺服務器,起到了保護的作用,但不影響連接,但是Tcp/ip協議的默認端口將被隱式修改為2433,在客戶端連接時必須作相應的改變。
4 如果服務器端操作系統打過sp2補丁,則要對windows防火墻作一定的配置,要對它開放1433端口,通常在測試時可以直接關掉windows防火墻(其他的防火墻也關掉******)。
5 檢查服務器是否在1433端口偵聽。如果服務器沒有在tcp連接的1433端口偵聽,則是連接不上的。檢查方法是在服務器的dos或命令行下面輸入
netstat -a -n 或者是netstat -an,在結果列表里看是否有類似 tcp 127.0.0.1 1433 listening 的項。如果沒有,則通常需要給sql server 2000打上至少sp3的補丁。其實在服務器端啟動查詢分析器,輸入 select @@version 執行后可以看到版本號,版本號在8.0.2039以下的都需要打補丁。
如果以上都沒問題,這時你再做telnet 服務器ip 1433 測試,將會看到屏幕一閃之后光標在左上角不停閃動。恭喜你,你馬上可以開始在企業管理器或查詢分析器連接了。
三 檢查客戶端設置
程序->Microsoft SQL Server -> 客戶端網絡使用工具。像在服務器網絡實用工具里一樣,確保客戶端tcp/ip協議啟用,并且默認端口為1433(或其他端口,與服務器端保持一致就行)。
四 在企業管理器里或查詢那分析器連接測試
企業管理器->右鍵SQlserver組->新建sqlserver注冊->下一步->寫入遠程IP->下一步->選Sqlserver登陸->下一步->寫入登陸名與密碼(sa,password)->下一步->下一步->完成
查詢分析器->文件->連接->寫入遠程IP->寫入登錄名和密碼(sa,password)->確定
通常建議在查詢分析器里做,因為默認情況下,通過企業管理器注冊另外一臺SQL Server的超時設置是4秒,而查詢分析器是15秒。
修改默認連接超時的方法:
企業管理器->工具->選項->在彈出的"SQL Server企業管理器屬性"窗口中,點擊"高級"選項卡->連接設置->在 登錄超時(秒) 后面的框里輸入一個較大的數字
查詢分析器->工具->選項->連接->在 登錄超時(秒) 后面的框里輸入一個較大的數字通常就可以連通了,如果提示錯誤,則進入下一步。
五 錯誤產生的原因通常是由于SQL Server使用了"僅 Windows"的身份驗證方式,因此用戶無法使用SQL Server的登錄帳戶(如 sa )進行連接。解決方法如下所示:
1 在服務器端使用企業管理器,并且選擇"使用 Windows 身份驗證"連接上 SQL Server。
2 展開"SQL Server組",鼠標右鍵點擊SQL Server服務器的名稱,選擇"屬性",再選擇"安全性"選項卡。
3 在"身份驗證"下,選擇"SQL Server和 Windows "。
4 重新啟動SQL Server服務。(在dos或命令行下面net stop mssqlserver停止服務,net start mssqlserver啟動服務,也是一種快捷的方法)。
附注:在連接本地服務器時,通常使用的是命名管道協議(在服務器網絡實用工具里可以看到啟用的協議有這個),默認端口是445,因此在本地能連通是不能說明什么問題的,連接遠程服務器是完全不同的協議)
SQL Server 2000不能遠程連接的問題
本文主要是針對 SQL Server 2000安裝在 Windows 2003上的問題。
在 Windows 2003下,若sql2000不打補丁,則SQL Server 2000不會監聽1433端口,這時,可以在本機上連接數據庫,但無法從其它機器連接。打過SP4補丁后才能遠程連接,有時,打過SP4補丁后,SQL Server 2000 默認監聽的端口不是1433,而是2433。
所以,安裝SQL Server 2000后,應該先打 SP4 補丁,打完后,若是無法連接,請用 NetState -an 查看1433端口是否被監聽。若監聽的是2433,你可以在客戶端設置SQL Server 的端口,也可以用企業管理器,對服務器點右鍵 => 屬性 => 網絡配置 => 點中右邊的 TCP/IP 選擇屬性 即可修改SQL Server 監聽的端口。
若是端口正常,請檢查 Win2003的防火墻中是不是把1433端口開放了。
卸載SQL Server2000后不能再次安裝的問題解決方法?
只要刪除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\下的PendingFileRenameOperations鍵值,就可以重新安裝了。
HKEY_LOCAL_MACHINE\system\currentcontrolset\services\下面都是系統存在的服務,刪除相應的項
SQL Server安全性設置
1. 確認已經安裝了NT/2000和SQL Server的******補丁程序,不用說大家應該已經安裝好了,但是我覺得******還是在這里提醒一下。
2. 評估并且選擇一個考慮到******的安全性但是同時又不影響功能的網絡協議。 多協議是明智的選擇, 但是它有時不能在異種的環境中使用。
3. 給 "sa" 和 "probe" 帳戶設定強壯的密碼來加強其安全性。設定一個強壯的密碼并將其保存在一個安全的地方。 注意: probe帳戶被用來進行性能分析和分發傳輸。 當在標準的安全模態中用的時候 , 給這個帳戶設定高強度的密碼能影響某些功能的使用。
4. 使用一個低特權用戶作為 SQL 服務器服務的查詢操作賬戶,不要用 LocalSystem 或sa。 這個帳戶應該有***小的權利 ( 注意作為一個服務運行的權利是必須的)和應該包含( 但不停止)在妥協的情況下對服務器的攻擊。 注意當使用企業管理器做以上設置時 , 文件,注冊表和使用者權利上的 ACLs同時被處理。
5. 確定所有的 SQL 服務器數據,而且系統文件是裝置在 NTFS 分區,且appropraite ACLs 被應用。 如果萬一某人得到對系統的存取操作權限,該層權限可以阻止入侵者破壞數據,避免造成一場大災難。
6.如果不使用Xp_cmdshell就關掉。 如果使用 SQL 6.5, 至少使用Server Options中的SQLExecutieCmdExec 賬戶操作限制非sa用戶使用XP_cmdshell.
如果你不需要擴展存儲過程xp_cmdshell請把它去掉。使用這個SQL語句:
use master
sp_dropextendedproc 'xp_cmdshell'
xp_cmdshell是進入操作系統的******捷徑,是數據庫留給操作系統的一個大后門。如果你需要這個存儲過程,請用這個語句也可以恢復過來。
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
將xplog70.dll這個包徹底刪除。當然如果覺得自己還有使用xp_cmdshell的可能,就將這個包改個名字好了~~
解決方法:運行SQLSERVER管理工具,給SA帳號加上強壯密碼,還要在SQL命令行執行:
“if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[xp_cmdshell]) and OBJECTPROPERTY(id, NIsExtendedProc) = 1) exec sp_dropextendedproc N[dbo].[xp_cmdshell] ”
GO
或: “use master sp_dropextendedproc xp_cmdshell”
這樣就算攻擊者獲得SA帳號密碼遠程連接后,也不能調用CMDSHELL了。
if exists (select * from dbo.sysobjects where id=object_id(N'[dbo].[xp_cmdshell]')and
OBJECTPROPERTY(id,N'IsExtendedProc')=1)
exec sp_dropextendedproc N'[dbo].[xp_cmdshell]'
GO
在任何的 isql/ osql 窗口中( 或查詢分析器):
use master
exec sp_dropextendedproc‘xp_cmdshell‘
對 SQLExecutiveCmdExec 的詳細情況請查看下列文章:
http://support.microsoft.com/support/kb/article/Q159/2/21.
如果你不需要 xp_cmdshell 那請停用它。請記住一個系統系統管理員如果需要的話總是能把它增加回
來。這也好也不好 - 一個侵入者可能發現它不在,只需要把他加回來。考慮也除去在下面的 dll但是移除
之前必須測試因為有些dll同時被一些程序所用。 要找到其他的程序是否使用相同的 dll: 首先得到該 dll 。
select o.name,c.text from dbo.syscomments c , dbo.sysobjects o where c.id=o.id and o.name=‘xp_cmdshell
其次,使用相同的 dll發現其他的擴展儲存操作是否使用該dll。
select o.name,c.text from dbo.syscomments c , dbo.sysobjects o where c.id=o.id and c.text=‘xplog70.dll‘
用戶可以用同樣的辦法處理下面步驟中其他你想去掉的進程。
7. 如不需要就停用對象連接與嵌入自動化儲存程序 ( 警告 - 當這些儲存程序被停用的時候 , 一些企業管理器功能可能丟失). 這些包括:
Sp_OACreate
Sp_OADestroy
Sp_OAGetErrorInfo
Sp_OAGetProperty
Sp_OAMethod
Sp_OASetProperty
Sp_OAStop
如果你決定停用該進程那么請給他們寫一個腳本這樣在以后你用到他們的時候你能夠把他們重新添加回來 。 記住, 我們在這里正在做的是鎖定一個應用程序的功能 - 你的開發平臺應該放到其他機器上。
8. 禁用你不需要的注冊表存取程序。(同上面的警告)這些包括:
Xp_regaddmultistring
Xp_regdeletekey
Xp_regdeletevalue
Xp_regenumvalues
Xp_regremovemultistring
注意 :我過去一直在這里列出 xp_regread/ xp_regwrite但是這些程序的移除影響一些主要功能包括日志和SP的安裝,所以他們的移除不被推薦
9.移除其他你認為會造成威脅的系統儲存進程。 這種進程是相當多的,而且他們也會浪費一些cpu時間。 小心不要首先在一個配置好的服務器上這樣做。首先在開發的機器上測試,確認這樣不會影響到任何的系統功能。在下面是我們所推薦的有待你評估的一些列表:
sp_sdidebug
xp_availablemedia
xp_cmdshell
xp_deletemail
xp_dirtree
xp_dropwebtask
xp_dsninfo
xp_enumdsn
xp_enumerrorlogs
xp_enumgroups
xp_enumqueuedtasks
xp_eventlog
xp_findnextmsg
xp_fixeddrives
xp_getfiledetails
xp_getnetname
xp_grantlogin
xp_logevent
xp_loginconfig
xp_logininfo
xp_makewebtask
xp_msver xp_perfend
xp_perfmonitor
xp_perfsample
xp_perfstart
xp_readerrorlog
xp_readmail
xp_revokelogin
xp_runwebtask
xp_schedulersignal
xp_sendmail
xp_servicecontrol
xp_snmp_getstate
xp_snmp_raisetrap
xp_sprintf
xp_sqlinventory
xp_sqlregister
xp_sqltrace
xp_sscanf
xp_startmail
xp_stopmail
xp_subdirs
xp_unc_to_drive
xp_dirtree
10. 在企業管理器中"安全選項" 之下禁用默認登錄。(只有SQL 6.5) 當使用整合的安全時候,這使未經認可的不在 syslogins 表中使用者無權登陸一個有效的數據庫服務器。
11. 除去數據庫的guest賬戶把未經認可的使用者據之在外。 例外情況是master和 tempdb 數據庫,因為對他們guest帳戶是必需的。
12. 若非必須,請完全地禁用SQL郵件功能。它的存在使潛在的攻擊者遞送潛在的 trojans ,病毒或是簡單實現一個DOS攻擊成為可能
13. 檢查master..Sp_helpstartup看有無可疑的木馬進程。 確定沒有人已經在這里放置秘密的后門程序。 使用 Sp_unmakestartup 移除任何可疑進程。
14. 檢查master..Sp_password看有無trojan代碼。比較你的產品scripts和一個新安裝的系統的默認scripts而且方便的保存。
15. 記錄所有的用戶存取訪問情況。 從企業管理器做這些設定或通過以sa登陸進入查詢分析器的下列各項:
xp_instance_regwrite N‘HKEY_LOCAL_MACHINE‘, N‘SOFTWARE\ Microsoft\MSSQLServer\MSSQLServer‘,N‘AuditLevel‘,REG_DWORD,3
16. 重寫應用程序使用更多用戶定義的儲存和察看進程所以一般的對表的訪問可以被禁用。 在這里你也應該看到由于不必經常進行查詢計劃操作而帶來的性能提升。
17. 除去不需要的網絡協議。
18. 注意SQL 服務器的物理安全。把它鎖在固定的房間里,并且注意鑰匙的安全。只要有機會到服務器面前,就總是會找到一個方法進入。
19. 建立一個計劃的任務運行: findstr/C:" Login Failed"\mssql7\log\*.*‘
然后再重定向輸出到一個文本文件或電子郵件,因此你監測失敗的登錄嘗試。這也為系統管理員提供一個好的記錄攻擊的方法。 也有很多用來分析NT日志事件的第三者工具。 注意: 你可能需要將路徑換成你安裝SQL的路徑。
20. 設定非法訪問和登陸失敗日志警報。到 企業管理器中的"Manager SQL Server Messages "搜尋任何有關無權訪問的消息 ( 從查找"login failed"和"denied"開始). 確定你所有感興趣的信息被記錄到事件日志。然后在這些信息上設定警報 , 發送一個電子郵件或信息到一個能夠對問題及時響應的操作員。
21. 確定在服務器和數據庫層次上的角色都只被授給了需要的用戶。 當 SQL Server 安全模型 7 有許多增強的時候, 它也增加額外的許可層,我們必須監控該層,確定沒有人被授予了超過必需的權限。
22. 經常檢查組或角色全體會員并且確定用組分配權限,這樣你的審計工作能夠簡化。 確定當你在的時候 , 公眾的組不能從系統表執行選擇操作。
23. 花些時間審計用空密碼登陸的請求。 使用下面的代碼進行空密碼檢查:
使用主體
選擇名字,
password
from syslogins
where password is null
order by name
24. 如果可能,在你的組織中利用整合的安全策略。 通過使用整合的安全策略,你能夠依賴系統的安全,******簡化管理工作從維護二個分開的安全模型中分離開來。這也不讓密碼接近連接字串。
25. 檢查所有非sa用戶的存取進程和擴充存儲進程的權限。 使用下面的查詢定期的查詢哪一個進程有公眾存儲權限。(在SQL Server中 使用 "type" 而不是 "xtype"):
Use master
select sysobjects.name
from sysobjects,sysprotects
where sysprotects.uid=0
AND xtype 在 (‘X‘,‘P‘)
AND sysobjects.id=sysprotects.id
Order by name
26. 當時用企業管理器的時候,使用整合的安全策略。 過去,企業管理器被發現在標準的安全模態中儲存 "sa" 密碼在注冊表的 plaintext 中。 注意: 即使你改變模態,密碼也會留在注冊表中。 使用 regedit 而且檢查鍵:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\MSSQLServer\SQLEW\ Regedi\SQL 6.5
現在數據被隱藏在 HKEY_USERS\{yourSID}\software\Microsoft\Microsoft SQL server\80\tool\SQLEW\registered server X\SQL server group ("SQL server組" 是默認值但是你可能已建立用戶組因此相應地改變其位置)
27. 發展一個審核計劃而且訂定每月的安全報告,對IT主管可用的報表包括任何的新exploit,成功的攻擊 , 備份保護 , 和對象存取失敗統計。
28. 不要允許使用者交互式登陸到 SQL Server之上。這個規則適用任何的服務器。 一旦一個使用者能夠交互式進入一個服務器之內,就有能用來獲得管理員的存取特權得到管理員權限。
30. 盡力限制對SQL Server的查詢與存取操作。 用戶可以用***小權限查詢sql server中的很多東西。若非必須不要給他們機會。