匯出 (0) 列印
全部展開

作法:使用 ADO.NET 連接到 Azure SQL Database

更新日期: 2013年12月

使用 ADO.NET 連接至 Microsoft Microsoft Azure SQL Database 中的資料庫,與連接至內部部署的 虛擬機器建立 執行個體類似。本主題描述連接至 Microsoft Azure SQL Database 的幾項考量,並提供可讓您開始進行的範例主控台應用程式。如需使用 ADO.NET 連接到資料來源的一般詳細資訊,請參閱連接到資料來源 (ADO.NET)

使用 Azure SQL 資料庫 應用程式連接到 ADO.NET 中的資料庫時,請考慮下列各點:

  • 使用 SqlConnectionStringBuilder 類別避免資料隱碼攻擊。該類別於 .NET Framework 中提供,可簡化建立連接字串的工作。如需詳細資訊,請參閱連接字串產生器 (ADO.NET)

  • 連接字串可能成為潛在的弱點。如需有關保護您連接字串的詳細資訊,請參閱保護連接資訊 (ADO.NET)

  • 加密連接方式,特別是透過網際網路連接到 Azure SQL 資料庫 時,杜絕攔截式攻擊。將 [加密連接] 設定為 True (Encrypt = True)。將 TrustServerCertificate 連接屬性設定為 False (TrustServerCertificate = False)。

  • 如需連接到 Azure SQL 資料庫 中的資料庫時所應考量的一般事項,請參閱連接到 Windows Azure SQL Database 的方針技術文章 – 閒置連線恢復功能

  • 當開啟 Azure SQL 資料庫 的連接時,請將連接逾時設定為 30 秒。

下列錯誤訊息是在 .NET 4.5 以前的 SqlClient 版本中使用:

Step Name : Read Query on Instance Management DB \n System.Data.SqlClient.SqlException (0x80131904): The instance of SQL Server you attempted to connect to does not support encryption.
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() 
at System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt, Boolean trustServerCert, Boolean& marsCapable)
at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity)
at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, SqlConnection owningObject)
at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout)

此錯誤表示在登入程序期間發生錯誤,而不是加密錯誤。從 .NET 4.5 開始,ADO.NET 會顯示較適當的錯誤訊息:

A connection was successfully established with the server, but then an error occurred during the pre-login handshake.

下列範例為連接到 Microsoft Azure SQL Database 的主控台應用程式。主控台應用程式會執行下列步驟:

  1. 主控台應用程式會使用另一個 SqlConnectionStringBuilder 物件連接至 Microsoft Azure SQL Database 中的 master 資料庫。應用程式接著會建立資料庫,其名稱來自 sampleDatabaseName 字串。

  2. 接著,主控台應用程式會使用另一個 SqlConnectionStringBuilder 物件連接至新的資料庫。

  3. 連接完成後,主控台應用程式會使用第二個 SqlConnectionStringBuilder 物件建立資料庫資料表,並且執行一些資料操作語言 (DML) 陳述式。

  4. 最後,主控台應用程式會在資料變更前及變更後將資料傳回至主控台。

若要在您的 Visual Studio 伺服器上使用 Azure SQL 資料庫 中的這個範例,請執行下列步驟:

  1. 開啟 Visual Studio 並且建立主控台應用程式。

  2. 將程式檔中的程式碼取代為這個範例中的程式碼。

  3. <ProvideUserName> 取代為已獲得指派 dbmanager 角色的 Microsoft Azure SQL Database 登入名稱。注意:如果您使用 login@server 使用者名稱格式,則名稱的 server 部分必須符合伺服器完整名稱的第一個部分。例如,若您的伺服器是 servername.database.windows.net,您的登入名稱就是 loginname@servername。如需有關 Microsoft Azure SQL Database 角色的詳細資訊,請參閱<管理 Azure SQL Database 中的資料庫和登入>。

  4. <ProvidePassword> 取代為與登入相關聯的密碼。注意:建議您在建立登入時使用強式密碼。如需詳細資訊,請參閱<增強式密碼>。

  5. <ProvideServerName> 取代為您 Azure SQL 資料庫 伺服器的完整網域名稱。例如:servername.database.windows.net

  6. <ProvideDatabaseName> 取代為您要程式碼建立的資料庫名稱。

  7. 執行程式碼。

note附註
這個程式碼中沒有可用來移除新資料庫的 Transact-SQL 陳述式。請先刪除資料庫,然後再次執行此應用程式。

另請參閱

顯示:
© 2014 Microsoft