Article Image
Article Image
read

因緣際會下,拿到了 Transact-SQL (又稱 T-SQL )的一個腳本,因為之前沒有使用過,所以在跑這個腳本時遇到很多小問題,一開始是想以Mac去嘗試,但是爬了一下文章,發現使用 Windows 環境會比較好操作。

什麼是 Transact-SQL

T-SQL 是在 Microsoft SQL Server 和 Sybase SQL Server 上的 ANSI SQL 實作,所以,以下是由 Windows 環境下去解釋。

再跑這個腳本前,自己有先在網路查詢有關於T-SQL的一些文章,在維基百科解釋,與網路上的幾篇文章下,我發現我必須先做以下這兩個前置作業。

前置作業

首先去 Microsoft Azure ,申請一個免費帳戶,雖然是免費帳戶,但是裡面有台幣6300的額度,對我來說是夠用的,申請完後,你可以去 Azure 的入口網站。 portal 進去後可以照著微軟提供的文件去一步一步去建立我們的資料庫,這個文件分步驟教學,很詳細的介紹,可以參考,至於名稱可以依自己喜好命名。他也有提醒要記得設定防火牆,因為這在之後會影響到是否有權限去查詢我們的資料庫。

再來我去下載 SQL Server Management Studio ,這個是 SQL Server 預設的資料庫管理工具,隨著 SQL Server 安裝時勾選用戶端的選項而安裝。因為有 T-SQL 的腳本,所以再將資料匯入我們的 SQL Server 會比較方便,這邊也有微軟提供的使用 SQL Server Management Studio (SSMS) 建立對 Azure SQL Database 伺服器的連線,這是在開啟 SQL Server Management Studio 後,我們需要先去與伺服器的連線。

好了,兩個前置作業都完成了,那是不是直接匯入我們的腳本就可以跑,錯!!! 在這邊我遇到三個問題。

再跑腳本時遇到的問題

  1. 設定防火牆問題,所以這個很重要,要記得設定防火牆,允許我們有權限去查詢我們的資料庫。

  2. 記得先熟悉 T-SQL 的語法,這邊有 T-SQL 的教學課程,我在這邊出現的錯誤是,找不到我的資料庫,最後發現在腳本檔中,並沒有建立資料庫的指令,所以我補上了指令來建立資料庫,如下:

    CREATE DATABASE TestData
    GO

  3. 以上兩個錯誤解決後,最後發現記憶體不足,所以無法執行檔案。 error-ssms 爬文發現解決的方式,可以下這個指令:

    sqlcmd -S PcName\SQLEXPRESS -U sa -P password -d DataBaseName -i C:\Script.sql -o C:\log.txt
    C:\Script.sql是指我們 sql 的腳本檔 C:\log.txt 則是輸出的檔案。另外,sqlcmd可以有以下 option:
    -S: 此處為在 SSMS 裡寫在「伺服器名稱」的值
    -U: 此處為在 SSMS 裡寫在「登入」的值
    -P: 此處為在 SSMS 裡寫在「密碼」的值
    -i: 匯入的腳本檔
    -o: 匯出的檔案,內容大致是平常在 SSMS 裡執行 SQL 語法時會出現在「訊息」窗格裡的內容

下這筆指令後,發現它噴錯,內容大致是說腳本的內容有錯誤。但是我仍相信腳本內容應該不會有問題,所以我還是嘗試在 SSMS 做查詢的動作,去嘗試寫入腳本的資料。 這在 SSMS 上的操作是正確的,所以我就想了另一種方式,也就是去分割腳本的檔案,一步一步去跑分割出來的檔案,之後很順利的將腳本的檔案匯入我們的 SQL Server 。 內容總量大約是 2.6 萬筆,資料庫發行精靈產生出的 SQL 腳本大約有 196.2 MB。

Blog Logo

Yi Wei Huang


Published

Image

Yi Wei

A student...

Back to Overview