將 Microsoft SQL Server 資料載入 BigQuery
您可以使用 BigQuery 資料移轉服務的 Microsoft SQL Server 連接器,將資料從 Microsoft SQL Server 載入 BigQuery。Microsoft SQL Server 連接器支援從地端部署環境和其他雲端供應商 (例如 Cloud SQL、Amazon Web Services (AWS) 或 Microsoft Azure) 中託管的 Microsoft SQL Server 執行個體載入資料。透過 BigQuery 資料移轉服務,您可以建立隨選和週期性資料移轉工作,將 Microsoft SQL Server 執行個體中的資料移轉至 BigQuery。
限制
Microsoft SQL Server 資料移轉工作有下列限制:
- Microsoft SQL Server 資料庫的連線數量有限,因此,同時傳輸至單一 Microsoft SQL Server 資料庫的執行次數也有限制。請確認並行傳輸工作數量少於 Microsoft SQL Server 資料庫支援的並行連線數量上限。
- 為避免資料遺失,部分 Microsoft SQL Server 資料類型可能會對應至 BigQuery 中的
STRING類型。舉例來說,Microsoft SQL Server 中未定義精確度和比例的特定數值型別,可能會對應至 BigQuery 中的STRING。詳情請參閱「資料類型對應」。
資料擷取選項
下節提供設定 Microsoft SQL Server 資料移轉時的資料擷取選項相關資訊。
傳輸層安全標準 (TLS) 設定
Microsoft SQL Server 連接器支援傳輸層安全標準 (TLS) 設定,可加密傳輸至 BigQuery 的資料。Microsoft SQL Server 連接器支援下列 TLS 設定:
- 加密資料,並驗證 CA 和主機名稱:這個模式會使用 TCPS 通訊協定透過 TLS 完整驗證伺服器。這項功能會加密所有傳輸中的資料,並驗證資料庫伺服器的憑證是否由信任的憑證授權單位 (CA) 簽署。這個模式也會檢查您連線的主機名稱,是否與伺服器憑證中的一般名稱 (CN) 或主體別名 (SAN) 完全相符。這個模式可防止攻擊者使用其他網域的有效憑證,冒充您的資料庫伺服器。
- 如果主機名稱與憑證 CN 或 SAN 不符,連線就會失敗。您必須設定 DNS 解析,使其與憑證相符,或使用其他安全模式。
- 使用這個模式可獲得最安全的選項,防止中間人 (PITM) 攻擊。
- 加密資料,並僅驗證 CA:這個模式會使用 TCPS 通訊協定透過 TLS 加密所有資料,並驗證伺服器的憑證是否由用戶端信任的 CA 簽署。不過,這個模式不會驗證伺服器的主機名稱。只要憑證有效且由信任的 VA 核發,這個模式就會成功連線,無論憑證中的主機名稱是否與您連線的主機名稱相符。
- 如果您想確保連線至憑證由信任的 CA 簽署的伺服器,但主機名稱無法驗證,或您無法控管主機名稱設定,請使用這個模式。
- 僅加密:這個模式會加密用戶端與伺服器之間傳輸的所有資料。不會執行任何憑證或主機名稱驗證。
- 這個模式會保護傳輸中的資料,提供一定程度的安全性,但可能容易受到中間人攻擊。
- 如果您需要確保所有資料都經過加密,但無法或不想驗證伺服器的身分,請使用這個模式。使用私人虛擬私有雲時,建議採用這個模式。
- 不加密或驗證:這個模式不會加密任何資料,也不會執行任何憑證或主機名稱驗證。所有資料都會以純文字形式傳送。
- 在處理機密資料的環境中,不建議使用這個模式。
- 我們建議只在安全性無虞的獨立網路中,將這個模式用於測試。
信任的伺服器憑證 (PEM)
如果您使用「加密資料,並驗證 CA 和主機名稱」模式或「加密資料,並驗證 CA」模式,也可以提供一或多個 PEM 編碼的憑證。在某些情況下,BigQuery 資料移轉服務需要驗證資料庫伺服器的身分,才能建立 TLS 連線,這時就需要這些憑證:
- 如果您使用貴機構內私人 CA 簽署的憑證,或是自行簽署的憑證,則必須提供完整的憑證鏈結或單一自行簽署憑證。如果是透過代管雲端服務 (例如 Amazon Relational Database Service (RDS)) 的內部 CA 簽發憑證,則必須執行這項操作。
- 如果資料庫伺服器憑證是由公開 CA 簽署 (例如 Let's Encrypt、DigiCert 或 GlobalSign),您就不需要提供憑證。BigQuery 資料移轉服務會預先安裝並信任這些公開 CA 的根憑證。
建立 Microsoft SQL Server 轉移設定時,您可以在「Trusted PEM Certificate」(信任的 PEM 憑證) 欄位中提供 PEM 編碼憑證,但須符合下列規定:
- 憑證必須是有效的 PEM 編碼憑證鏈結。
- 憑證必須完全正確。如果鏈結中缺少任何憑證或內容有誤,TLS 連線就會失敗。
- 如果是單一憑證,您可以提供資料庫伺服器的單一自行簽署憑證。
- 如果是私人 CA 核發的完整憑證鏈結,您必須提供完整的信任鏈結。包括資料庫伺服器的憑證,以及任何中繼和根 CA 憑證。
事前準備
如要排定 Microsoft SQL Server 資料移轉作業,請務必先符合下列必要條件。
Microsoft SQL Server 必要條件
您必須在 Microsoft SQL Server 資料庫中建立使用者帳戶。詳情請參閱「建立可登入的使用者」。
BigQuery 必要條件
- 確認您已完成啟用 BigQuery 資料移轉服務的一切必要動作。
- 請建立 BigQuery 資料集來儲存您的資料。
必要的角色
如要取得建立 Microsoft SQL Server 資料移轉作業所需的權限,請要求管理員授予您專案的 BigQuery 管理員 (roles/bigquery.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備建立 Microsoft SQL Server 資料移轉作業所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要建立 Microsoft SQL Server 資料移轉作業,必須具備下列權限:
-
bigquery.transfers.update -
bigquery.datasets.get
網路設定
如果 Microsoft SQL Server 資料庫連線沒有可用的公開 IP 位址,您必須設定特定網路設定。詳情請參閱下列章節:
設定 Microsoft SQL Server 資料移轉作業
選取下列選項之一:
控制台
前往「資料轉移」頁面。
按一下「建立轉移作業」。
在「Source type」(來源類型) 部分,「Source」(來源) 請選取「Microsoft SQL Server」。
在「Data source details」(資料來源詳細資料) 部分執行下列操作:
- 在「Network attachment」(網路連結) 部分選取現有的網路連結,或是點選「Create Network Attachment」(建立網路連結)。
- 在「Host」(主機) 部分,輸入 Microsoft SQL Server 資料庫的主機名稱或 IP 位址。
- 在「Port number」(通訊埠編號) 中,輸入 Microsoft SQL Server 資料庫的通訊埠編號。
- 在「Database name」(資料庫名稱) 部分,輸入 Microsoft SQL Server 資料庫的名稱。
- 在「Username」(使用者名稱) 欄位中,輸入啟動 Microsoft SQL Server 資料庫連線的 Microsoft SQL Server 使用者名稱。
- 在「密碼」欄位中,輸入啟動 Microsoft SQL Server 資料庫連線的 Microsoft SQL Server 使用者密碼。
- 在「TLS Mode」(TLS 模式) 中,從選單選取一個選項。如要進一步瞭解 TLS 模式,請參閱「TLS 設定」。
- 在「Trusted PEM Certificate」(信任的 PEM 憑證) 欄位中,輸入核發資料庫伺服器 TLS 憑證的憑證授權單位 (CA) 公開憑證。詳情請參閱「信任的伺服器憑證 (PEM)」一文。
- 在「Microsoft SQL Server objects to transfer」(要移轉的 Microsoft SQL Server 物件),瀏覽 Microsoft SQL Server 資料表,或手動輸入移轉所需的資料表名稱。
在「Destination settings」(目的地設定) 部分,「Dataset」(資料集) 請選取您為了儲存資料而建立的資料集,或按一下「Create new dataset」(建立新的資料集),然後建立一個做為目的地資料集。
在「Transfer config name」(轉移設定名稱) 部分,「Display name」(顯示名稱) 請輸入移轉作業的名稱。移轉作業名稱可以是任意值,日後需要修改移轉作業時能夠據此識別。
在「Schedule options」(排程選項) 部分執行下列操作:
- 選取重複頻率。如果選取「小時」、「天」(預設)、「週」或「月」選項,則必須一併指定頻率。您也可以選取「Custom」(自訂) 選項,建立專屬的重複頻率。如果選取「On-demand」(隨選),這項資料移轉作業會在您手動觸發後執行。
- 視情況選取「立即開始」或「在所設時間開始執行」選項,並提供開始日期和執行時間。
選用:在「Notification options」(通知選項) 專區,執行下列操作:
選用:在「Advanced options」(進階選項) 部分,選取這次轉移作業的加密類型。您可以選取 Google-owned and Google-managed encryption key或客戶擁有的 Cloud Key Management Service 金鑰。如要進一步瞭解加密金鑰,請參閱「客戶自行管理的加密金鑰 (CMEK)」。
按一下 [儲存]。
bq
輸入 bq mk 指令並加上移轉建立標記 --transfer_config:
bq mk \ --transfer_config \ --project_id=PROJECT_ID \ --data_source=DATA_SOURCE \ --display_name=DISPLAY_NAME \ --target_dataset=DATASET \ --params='PARAMETERS'
更改下列內容:
PROJECT_ID(選用):您的 Google Cloud 專案 ID。 如未提供--project_id標記指定特定專案,系統會使用預設專案。DATA_SOURCE:資料來源,即sqlserver。DISPLAY_NAME:資料移轉設定的顯示名稱。移轉作業名稱可以是任意值,日後需要修改移轉作業時,能夠據此識別即可。DATASET:資料移轉設定的目標資料集。PARAMETERS:已建立移轉設定的 JSON 格式參數。例如:--params='{"param":"param_value"}'。以下是 Microsoft SQL Server 轉移作業的參數:connector.networkAttachment(選用):要連線至 Microsoft SQL Server 資料庫的網路附件名稱。connector.database:Microsoft SQL Server 資料庫的名稱。connector.endpoint.host:資料庫的主機名稱或 IP 位址。connector.endpoint.port:資料庫的通訊埠編號。connector.authentication.username:資料庫使用者的使用者名稱。connector.authentication.password:資料庫使用者的密碼。connector.tls.mode:指定要用於這項轉移作業的 TLS 設定:ENCRYPT_VERIFY_CA_AND_HOST加密資料,並驗證 CA 和主機名稱ENCRYPT_VERIFY_CA加密資料,且僅驗證 CAENCRYPT_VERIFY_NONE僅適用於資料加密DISABLE,不加密或驗證
connector.tls.trustedServerCertificate:(選用) 提供一或多個 PEM 編碼的憑證。只有在connector.tls.mode的值為ENCRYPT_VERIFY_CA_AND_HOST或ENCRYPT_VERIFY_CA時,才需要提供這項資訊。assets:要從 Microsoft SQL Server 資料庫轉移的 Microsoft SQL Server 資料表名稱清單。
舉例來說,下列指令會建立名為 My Transfer 的 Microsoft SQL Server 轉移作業:
bq mk \ --transfer_config --target_dataset=mydataset --data_source=sqlserver --display_name='My Transfer' --params='{"assets":["db1/dbo/Department","db1/dbo/Employees"], "connector.authentication.username": "User1", "connector.authentication.password":"ABC12345", "connector.database":"DB1", "connector.endpoint.host":"192.168.0.1", "connector.endpoint.port":"1520", "connector.networkAttachment":"projects/dev-project1/regions/us-central1/networkattachments/na1", "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST", "connector.tls.trustedServerCertificate": "PEM-encoded certificate"}'
如要在正常時間表以外手動執行資料轉移作業,可以啟動回填作業。
資料類型對應
下表列出 Microsoft SQL Server 資料類型對應的 BigQuery 資料類型:
| Microsoft SQL Server 資料型別 | BigQuery 資料類型 |
|---|---|
tinyint |
INTEGER |
smallint |
INTEGER |
int |
INTEGER |
bigint |
BIGNUMERIC |
bit |
BOOLEAN |
decimal |
BIGNUMERIC |
numeric |
NUMERIC |
money |
BIGNUMERIC |
smallmoney |
BIGNUMERIC |
float |
FLOAT |
real |
FLOAT |
date |
DATE |
time |
TIME |
datetime2 |
TIMESTAMP |
datetimeoffset |
TIMESTAMP |
datetime |
TIMESTAMP |
smalldatetime |
TIMESTAMP |
char |
STRING |
varchar |
STRING |
text |
STRING |
nchar |
STRING |
nvarchar |
STRING |
ntext |
STRING |
binary |
BYTES |
varbinary |
BYTES |
image |
BYTES |
geography |
STRING |
geometry |
STRING |
hierarchyid |
BYTES |
rowversion |
BYTES |
sql_variant |
BYTES |
uniqueidentifier |
STRING |
xml |
STRING |
json |
STRING |
vector |
STRING |
json 和 vector 資料類型僅支援 Azure。
Azure SQL 資料庫和 Azure SQL 受管理執行個體支援 JSON 資料類型,但必須設定為採用「永遠保持最新」更新政策。如果 Azure SQL 受控執行個體設定了 Microsoft SQL Server 2022 更新政策,則不支援 JSON 資料型別。
Microsoft SQL Server 會將 JSON 儲存為 NVARCHAR(MAX),而非 JSON 類型。建議您使用 CHECK (ISJSON(json_col) = 1) 進行驗證,並使用 JSON_VALUE() 進行查詢。
Microsoft SQL Server 不支援 vector 資料類型的向量。建議您將向量儲存為 NVARCHAR(MAX) 中的 JSON 陣列,並使用 JSON_VALUE() 擷取向量,然後手動計算 FLOAT 相似度。
疑難排解
如要排解資料移轉問題,請參閱「Microsoft SQL Server 移轉問題」。
定價
這項功能處於預覽階段時,將 Microsoft SQL Server 資料移轉至 BigQuery 不會產生費用。
後續步驟
- 如需 BigQuery 資料移轉服務的總覽,請參閱「什麼是 BigQuery 資料移轉服務?」一文。
- 如要瞭解如何使用移轉作業,包括取得移轉作業設定的相關資訊、列出移轉作業設定以及查看移轉作業執行記錄,請參閱「管理移轉作業」一文。