2013-04-11 43 views
50

初步嘗試

我有一個Azure的VM與Windows Server 2012中,關於這一點我剛剛安裝了SQL Server 2012 Express數據庫引擎零件。然後,我按照指示here遠程連接到SQL Server Management Studio。使用SQL Server Management Studio中遠程連接到託管在Azure中虛擬機的SQL Server Express實例

  1. Create a TCP endpoint for the virtual machine
  2. Open TCP ports in the Windows firewall
  3. Configure SQL Server to listen on the TCP protocol
  4. Configure SQL Server for mixed mode authentication
  5. Create SQL Server authentication logins
  6. Determine the DNS name of the virtual machine
  7. Connect to the Database Engine from another computer

第七步後,我收到以下錯誤:

A network related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) (Microsoft SQL Server, Error: 53)

還有什麼我需要遠程連接之前配置?

故障排除

我一直在下面的故障排除說明here。下面的每個blockquote是描述該鏈接的步驟。

Confirm the instance of the SQL Server Database Engine is installed and running.

完成。我們安裝了SQL Server Express,並且它作爲名爲SQLEXPRESS的命名實例運行。

If you are attempting to connect to a named instance, make sure the SQL Server Browser service is running.

完成。我們按照步驟here打開SQL Server Browser服務。

Get the IP Address of the computer.

完成。我們稍後將使用這些測試來測試連通性,並可能爲SQLEXPRESS設置一個靜態端口。

10.241.62.155

FE80 :: 45:8c29:e19f:f78b%15

Get the TCP port number used by SQL Server.

完成。該SQL Server Management Studio服務器日誌顯示服務器正在偵聽端口49169.

Enable Protocols

完成。我們已經在配置管理器中啓用了TCP/IP,但爲了以防萬一,我們重新啓動了SQL Server服務。

Testing TCP/IP Connectivity

完成。我們使用tcping.exe來測試連接(CMD ping不與天青迅速開展工作。)我們能夠連接到端口80

  • tcping.exe buddha.cloudapp.net>成功
  • tcping.exe佛.cloudapp.net 80>成功

Testing a Local Connection

完成。我們在命令提示符下使用了sqlcmd.exe,並且能夠通過TCP以本地方式連接用戶名和密碼。

  • SQLCMD -S佛\ SQLEXPRESS(經由共享存儲器協議成功)
  • SQLCMD -S TCP:佛\ SQLEXPRESS(經由TCP成功)
  • SQLCMD -S TCP:佛\ SQLEXPRESS -U SA - P(通過TCP成功與用戶名)
  • 的sqlcmd -S TCP:10.241.62.155 \ SQLEXPRESS -U SA P(內部IP成功)

Opening a Port in the Firewall

我們打開了我們SQL端口EXPRESS收聽。服務器日誌(上圖)顯示,SQLEXPRESS是偵聽端口49169,但是這僅僅是衆多動態端口之一,我們希望建立靜態端口1435

  • 使用WF.msc創建入站端口TCP規則1435
  • 使用Azure管理門戶創建TCP端點端口1435

的故障排除指導也說:

If you are connecting to a named instance or a port other than TCP port 1433, you must also open the UDP port 1434 for the SQL Server Browser service.

由於w^e正在連接SQLEXPRESS(一個命名實例),我們需要爲UDP打開端口1434。

  • 使用WF.msc爲端口創建入站UCP規則1434
  • 使用Azure管理門戶創建UDP端點端口1434

進一步研究有關連接到命名實例揭示了動態端口問題。爲什麼我們要使用端口1435(靜態),而不是端口49169的原因(許多有效的辦法之一。)

Instances of SQL Server Express, SQL Server Compact, and named instances of the Database Engine use dynamic ports. To configure these instances to use a specific port, see Configure a Server to Listen on a Specific TCP Port (SQL Server Configuration Manager). and here .

完成。我們進入SQL配置管理器> SQL Server網絡配置> SQLEXPRESS> TCP/IP協議,我們做了以下工作。

協議選項卡>全部收聽>否。

IP地址選項卡>列出的每個地址

  • 啓用>是
  • TCP動態端口>空白(刪除零)
  • TCP端口> 1435(或您選擇)

重新啓動SQLEXPRESS服務後,我們再次查看了SQL Server Management Studio日誌,發現服務器正在偵聽端口1435!萬歲!

Testing the Connection

完成。我們在本地(非Azure)計算機上打開SQL Server Management Studio並連接。

  • buddha.cloudapp.net,1435或buddha.cloudapp。NET \ SQLEXPRESS
  • SA
  • 密碼

成功。

+3

哇,列出所有步驟和嘗試的令人難以置信的工作。 – 2014-05-04 01:51:15

+2

你剛剛爲我節省了很多時間!對我來說最重要的是協議選項卡>全部收聽>無。我不必從1433改變IP,但是我確實從動態端口中刪除了0來獲得更好的效果。我假設我的問題源自所有其他列出的協議正在偵聽。做得好! – hiro77 2014-09-05 19:25:43

回答

15

以下是我們找到答案的三個網頁。最困難的部分是爲SQLEXPRESS設置靜態端口。

Provisioning a SQL Server Virtual Machine on Windows Azure。這些初步指示提供了25%的答案。

How to Troubleshoot Connecting to the SQL Server Database Engine。仔細閱讀這個答案提供了另外50%的答案。

How to configure SQL server to listen on different ports on different IP addresses?。這可以爲命名實例(例如SQLEXPRESS)設置靜態端口。我們最終花了25%的答案。

13

事實上,您從Names Pipes Provider獲取錯誤告訴我們,當您嘗試建立連接時,您沒有使用TCP/IP協議。嘗試添加「tcp」前綴並指定端口號:

tcp:name.cloudapp.net,1433 
+0

嗨保羅,仍然有一個錯誤,但現在它來自TCP提供者而不是命名管道提供者。 - Shaun Luttin 7分鐘前 – 2013-04-11 20:17:31

+0

對不起,基於你的問題的快速閱讀,我以爲你已經配置好你的服務器來偵聽靜態端口1433. – 2013-04-12 16:46:56

+0

不用擔心。謝謝保羅。 – 2013-04-12 20:23:20

1

我也在類似的事情上掙扎。我的猜測是您的實際問題是連接到在另一臺計算機上運行的SQL Express實例。

  1. 確保SQL Express的配置爲SQL身份驗證以及Windows身份驗證(默認):做這個步驟可以概括如下。您通過SQL Server Management Studio(SSMS)服務器屬性/安全性執行此操作
  2. 在SSMS中,創建一個名爲「sqlUser」的新登錄名,例如,使用合適的密碼「sql」。確保爲SQL身份驗證設置此新登錄,而不是Windows身份驗證。 SSMS服務器安全/登錄/屬性/常規。此外,還要確保「強制密碼策略」是沒有選
  3. 在屬性/服務器角色確保這個新的用戶具有「系統管理員」的角色
  4. 在SQL Server配置管理器SSCM(在Windows \ SysWOW64中,如果你可以搜索SQLServerManagerxx.msc文件找不到SSCM)在SQLExpress的SQL Server網絡配置/協議下確保TCP/IP已啓用。如果需要,您可以禁用命名管道
  5. 右鍵單擊協議TCP/IP並在IPAddresses選項卡上確保每個IP地址都設置爲啓用是和TCP端口1433(這是SQL Server的默認端口)
  6. 在Windows防火牆(WF.msc)中創建兩個新的入站規則 - 一個用於SQL Server,另一個用於SQL Browser Service。對於SQL Server,您需要打開TCP端口1433(如果您使用SQL Server的默認端口),對於SQL瀏覽器服務非常重要,您需要打開UDP端口1434。在防火牆中適當命名這兩條規則
  7. 使用SSCM或Services.msc管理單元停止並重新啓動SQL Server服務
  8. 在Services.msc管理單元中,確保SQL Browser服務啓動類型爲Automatic,並且然後啓動此服務

此時,您應該能夠使用SQL身份驗證,用戶「sqlUser」密碼「sql」遠程連接到上面配置的SQL Express實例。最後一個提示和簡單的方法來檢查這一點是創建一個帶有.UDL擴展名的空文本文件,在你的桌面上說「Test.UDL」。雙擊編輯此文件將調用Microsoft Data Link Properties對話框,通過該對話框可以快速測試遠程SQL連接

相關問題