適用於:Azure SQL 資料庫
本文可協助 C 和 C++ 開發人員連線到 Azure SQL 資料庫。
必要條件
若要完成本指南中的步驟,您需要下列項目︰
- 作用中的 Azure 帳戶。 如果還沒有訂用帳戶,則可註冊免費試用版。
- Visual Studio。 您必須安裝 C++ 語言元件,才能組建並執行此範例。
- Visual Studio Linux 開發。 如果您要在 Linux 上開發,您也必須安裝 Visual Studio Linux 延伸項目。
資料存取技術:ODBC 和 OLE DB
目前有兩種方式可連線到 Azure SQL 資料庫:ODBC (開放式資料庫連接) 和 OLE DB (物件連結與嵌入資料庫)。 近年來,Microsoft 已配合 ODBC 進行原生關聯性數資料存取。 ODBC 比 OLE DB 快得多。 唯一要注意的事項是 ODBC 確實使用舊的 C 式 API。
建立您的 Azure SQL Database
請參閱 開始使用頁面,瞭解如何建立範例資料庫。
取得連接字串
佈建 Azure SQL 資料庫後,您需要繼續下列步驟來判定連線資訊,並新增用戶端 IP 以進行防火牆存取。
在 Azure 入口網站中,移至您的 Azure SQL Database,然後使用在資料庫概觀區段中所列的顯示資料庫連接字串來找到 連接字串:
選取 [ODBC] 索引標籤。
複製 ODBC 的內容(包括 Node.js)[SQL 驗證] 字串。 我們稍後會使用此字串從 C++ ODBC 命令列解譯器連線。 此字串提供了驅動程式、伺服器和其他資料庫連接參數等詳細資料。
將您的 IP 新增至防火牆
- 移至 您的 Azure SQL Database 邏輯伺服器。 在 SQL 資料庫的 [概覽] 頁面上選取 [伺服器名稱] 的連結,或透過 Azure 入口網站的搜尋功能瀏覽至該名稱。
- 在 [安全性] 底下,選取 [網路]。
- 在 [公用存取] 索引標籤下,選取 [選擇的網絡](如果尚未選取)。
- 使用下列步驟將用戶端IP新增至防火牆,以確保我們可以建立成功的連線。 選取 [新增用戶端 IPv4 位址 ] 或 [新增防火牆規則]。
此時,您已設定 Azure SQL Database,並已準備好從工作站以 C++ 程式碼進行連線。
小提示
暫時性的實驗室或學習環境接受將用戶端的工作站 IP 新增至公用網路防火牆,但針對企業級解決方案或長期專案,請遵循下列 安全性最佳做法:
- 設定 [允許 Azure 服務和資源在伺服器層級將此伺服器存取 為 OFF]。
- 使用 VNet 服務端點以及 VNet 防火牆規則。
- 使用私人連結。
從 Windows C/C++ 應用程式連線
您可以使用以 Visual Studio 組建的這個範例,輕鬆地使用 Windows 上的 ODBC 連線到 Azure SQL 資料庫。 此範例會實作 ODBC 命令列解譯器,可用來連線到我們的 Azure SQL 資料庫。 此範例會採用資料庫來源名稱檔案 (DSN) 檔案作為命令列引數,或稍早從 Azure 入口網站複製的冗長連接字串。 啟動這個專案的屬性頁,並將連接字串貼上為命令引數,如下所示:
請確定您為資料庫提供了正確的驗證詳細資料,作為該資料庫連接字串的一部分。
啟動應用程式來組建。 您應該會看到下列視窗驗證成功的連線。 您甚至可以執行一些基本的 SQL 命令,例如 CREATE TABLE 驗證資料庫連線能力:
或者,您可以在使用未提供任何命令引數時啟動的精靈來建立 DSN 檔案。 建議您避免使用這個選項。 您可以使用此 DSN 檔案進行自動化,並保護您的驗證設定:
恭喜! 您現在已使用 Windows 上的 C++ 和 ODBC 成功連線到 Azure SQL。 您可以繼續閱讀,為 Linux 平台執行相同的作業。
從 Linux C/C++ 應用程式連線
您可以在 Visual Studio 中開發 C++ Linux 應用程式。 若要深入瞭解,請檢閱下列部落格:適用於 Linux 開發的 Visual C++。
欲組建 Linux,您需要一台運行 Linux 發行版的遠端電腦。。 如果您沒有可用的虛擬機器,您可以使用 Linux Azure 虛擬機 和各種部署方法快速設定一個。
本指南假設您已設定好 Ubuntu 16.04 Linux 發行版。 此步驟也應適用於 Ubuntu 15.10、Red Hat 6 和 Red Hat 7。
下列步驟會安裝 SQL 和 ODBC 發行版所需的媒體櫃:
sudo su
sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/mssql-ubuntu-test/ xenial main" > /etc/apt/sources.list.d/mssqlpreview.list'
sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
apt-get update
apt-get install msodbcsql
apt-get install unixodbc-dev-utf16 #this step is optional but recommended*
啟動 Visual Studio。 在 工具 -> -跨平台->底下,新增與您的 Linux 伺服器的連線:
建立透過 SSH 連線之後,請建立空白專案 (Linux) 範本:
接著,您便可以新增新的 C 來源檔案,並以此內容進行取代。 使用 ODBC API SQLAllocHandle、 SQLSetConnectAttr和 SQLDriverConnect,您應該能夠初始化和建立資料庫的連線。
如同 Windows ODBC 範例,您需要以先前從 Azure 入口網站複製的資料庫連接字串參數詳細數據取代 SQLDriverConnect 呼叫。
retcode = SQLDriverConnect(
hdbc, NULL, "Driver=ODBC Driver 13 for SQL"
"Server;Server=<yourserver>;Uid=<yourusername>;Pwd="
"<password>;database=<yourdatabase>",
SQL_NTS, outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_NOPROMPT);
編譯前的最後一件事是將 odbc 新增為媒體庫相依性:
欲啟動您的應用程式,請從 [偵錯] 功能表啟動 Linux 主機:
如果您的連線成功,您現在應該會在 Linux 主機看到印出的目前資料庫名稱:
恭喜! 您已完成本指南,現在可以從 Windows 和 Linux 平台上的 C++ 連線到 Azure SQL 資料庫。
取得完整的 C/C++ 教學課程解決方案
您可以在 GitHub 找到 GetStarted 包含本文中所有範例的解決方案:
- ODBC C++ Windows 範例,請下載 Windows C++ ODBC 範例來連線到 Azure SQL
- ODBC C++ Linux 範例,請下載 Linux C++ ODBC 範例來連線到 Azure SQL