本節說明 Cloud SQL 執行個體的預存程序。
預存程序包含可重複使用的 SQL 程式碼。
如要執行預存程序,請使用 EXEC 指令,並替換下列變數:
- procedure_name 是預存程序的名稱。
- database_name 是要執行程序的資料庫名稱。
- schema_name 是要執行程序的結構定義名稱。
EXEC database_name.schema_name.procedure_name @param1, @param2;
如要自行建立預存程序,請參閱「建立預存程序」。
SQL Server 適用的 Cloud SQL 預存程序
使用大量插入的預存程序
如要瞭解大量插入,請參閱「使用大量插入功能匯入資料」。
msdb.dbo.gcloudsql_bulk_insert
語法
EXEC msdb.dbo.gcloudsql_bulk_insert @database @schema @object @file ...
說明
這個預存程序的參數和行為與 BULK INSERT 指令類似。
預存程序會從儲存在 Cloud Storage bucket 的檔案,將資料匯入 Cloud SQL 執行個體。這項服務會使用 Cloud Storage 互通 API 和 HMAC 金鑰,驗證 Cloud Storage bucket 的存取權。
這個預存程序有下列參數:
| 參數 | 類型 | 說明 |
|---|---|---|
@database |
SYSNAME |
指定要匯入資料的目標資料庫名稱。 |
@schema |
SYSNAME |
指定資料表所屬結構定義的名稱。 |
@object |
NVARCHAR |
指定要插入資料的資料表名稱。 |
@file |
NVARCHAR |
指定 Cloud Storage bucket 中匯入檔案的路徑。 路徑格式必須如下: s3://storage.googleapis.com/BUCKET_NAME/FILE_PATH 替換下列內容:
|
@batchsize |
INT |
指定批次中的資料列數量。 |
@checkconstraints |
BIT |
指定必須檢查目標資料表的所有限制。 |
@codepage |
NVARCHAR |
指定檔案中資料的字碼頁。RAW 是預設且唯一的選項。 |
@datafiletype |
NVARCHAR |
指定大量插入檔案類型。 |
@datasource |
NVARCHAR |
指定要匯入資料的外部資料來源名稱。 |
@errorfile |
NVARCHAR |
指定檔案路徑,用於收集格式錯誤的資料列。
路徑格式必須如下: s3://storage.googleapis.com/BUCKET_NAME/FILE_PATH 替換下列內容:
此外,Cloud SQL 會建立副檔名為 |
@errorfiledatasource |
NVARCHAR |
指定要建立錯誤檔案的外部資料來源名稱。 |
@firstrow |
INT |
指定要載入的第一列數字 ID。 |
@firetriggers |
BIT |
指出在大量插入作業期間,系統會執行目標資料表上定義的所有插入觸發條件。 |
@formatfiledatasource |
NVARCHAR |
指定要從哪個外部資料來源載入格式檔案。 |
@keepidentity |
BIT |
指定使用匯入檔案中的身分資料,做為身分欄。值為 0 (代表 false) 和 1 (代表 true)。 |
@keepnulls |
BIT |
指定在大量匯入作業期間,空白資料欄是否應保留空值,而不是插入資料欄的任何預設值。值為 0 (代表 false) 和 1 (代表 true)。 |
@kilobytesperbatch |
INT |
指定每個批次的資料量,以 KB 為單位。 |
@lastrow |
INT |
指定要載入的最後一列數字 ID。 |
@maxerrors |
INT |
指定 Cloud SQL 取消作業前允許的錯誤數量。 |
@ordercolumnsjson |
NVARCHAR |
以 JSON 格式指定排列順序和資料欄。例如:[{"name": "COLUMN_NAME","order": "ORDER"},{"name": "COLUMN_NAME","order": "ORDER"}] 替換下列內容:
|
@rowsperbatch |
INT |
指定每個批次的資料列數量。 如要進一步瞭解如何選取批次大小,請參閱「效能考量」 |
@tablock |
BIT |
指定在大量插入作業期間鎖定資料表。 |
@format |
NVARCHAR |
指定檔案格式。請使用 CSV 做為這個參數的值。 |
@fieldquote |
NVARCHAR |
指定 CSV 檔案中要用做引用字元的字元。 如未指定值,Cloud SQL 會使用 |
@formatfile |
NVARCHAR |
指定 Cloud Storage 中的檔案路徑,說明要匯入的資料格式。
路徑格式應如下所示: s3://storage.googleapis.com/BUCKET_NAME/FILE_PATH 替換下列內容:
|
@fieldterminator |
NVARCHAR |
指定 char 和 widechar 資料檔案的欄位終止符。 |
@rowterminator |
NVARCHAR |
指定 char 和 widechar 資料檔案的資料列終止符。 |
SQL Server 稽核功能的預存程序
如要瞭解如何使用 SQL Server 稽核功能,請參閱「SQL Server 資料庫稽核」。
msdb.dbo.gcloudsql_fn_get_audit_file
語法
msdb.dbo.gcloudsql_fn_get_audit_file
說明
從 SQL Server 稽核功能建立的稽核檔案中擷取資料。
這個預存程序接受與 sys.fn_get_audit_file 函式相同的參數。如要進一步瞭解 msdb.dbo.gcloudsql_fn_get_audit_file,請參閱該函式的說明文件。
變更資料擷取 (CDC) 的預存程序
如要進一步瞭解 CDC,請參閱「啟用變更資料擷取」。
msdb.dbo.gcloudsql_cdc_enable_db
語法
exec msdb.dbo.gcloudsql_cdc_enable_db databaseName
說明
為資料庫啟用變更資料擷取功能。
databaseName:要執行這個預存程序的資料庫名稱。
msdb.dbo.gcloudsql_cdc_disable_db
語法
exec msdb.dbo.gcloudsql_cdc_disable_db databaseName
說明
停用資料庫的 CDC。
databaseName:要執行這個預存程序的資料庫名稱。
以 Cloud SQL 做為發布者的外部複製預存程序
如要進一步瞭解如何發布至外部訂閱者或其他 Cloud SQL 執行個體,請參閱「設定外部副本」。
msdb.dbo.gcloudsql_transrepl_setup_distribution
語法
exec msdb.dbo.gcloudsql_transrepl_setup_distribution @login,@password
說明
設定發布資料庫的包裝函式預存程序。包裝函式會呼叫下列項目:sp_adddistributor、sp_adddistributiondb 和 sp_adddistpublisher。
- login:現有的登入資訊,用於連線及建立發布資料庫。
- password:連線至發布商時使用的密碼。
msdb.dbo.gcloudsql_transrepl_replicationdboption
語法
exec msdb.dbo.gcloudsql_transrepl_replicationdboption @db,@value
說明
為使用 sp_replicationdboption 的發布者啟用或停用資料庫的發布選項。
- db:要設定複製選項的資料庫。
- value:可指定
True啟用發布選項,或指定False停用發布選項。
msdb.dbo.gcloudsql_transrepl_addlogreader_agent
語法
exec msdb.dbo.gcloudsql_transrepl_addlogreader_agent @db,@login,@password
說明
為使用 sp_addlogreader_agent 的資料庫設定記錄讀取器代理程式。
- db:要發布的資料庫。
- login:連線至發布者時使用的登入資訊。
- password:連線時使用的密碼。
msdb.dbo.gcloudsql_transrepl_addpublication
語法
exec msdb.dbo.gcloudsql_transrepl_addpublication @db,@publication
說明
建立交易式發布作業,並做為 sp_addpublication 的包裝函式預存程序。
- db:要發布的資料庫。
- publication:新建立的發布作業名稱。
msdb.dbo.gcloudsql_transrepl_droppublication
語法
exec msdb.dbo.gcloudsql_transrepl_droppublication @db,@publication
說明
捨棄交易式發布,並做為 sp_droppublication 的包裝函式預存程序。
- db:要捨棄發布作業的資料庫。
- publication:已捨棄的發布作業名稱。
msdb.dbo.gcloudsql_transrepl_addpublication_snapshot
語法
exec msdb.dbo.gcloudsql_transrepl_addpublication_snapshot @db,@publication,@login,@password
說明
為要發布的資料庫建立快照代理程式,做為 sp_addpublication_snapshot 的包裝函式預存程序。
- db:要捨棄發布項目的資料庫。
- publication:已捨棄的發布作業名稱。
- login:連線至發布者時使用的登入資訊。
- password:連線時使用的密碼。
msdb.dbo.gcloudsql_transrepl_addpushsubscription_agent
語法
exec msdb.dbo.gcloudsql_transrepl_addpushsubscription_agent
@db,@publication,@subscriber_db,@subscriber_login,
@subscriber_password,@subscriber
說明
建立新的排程代理工作,同步處理推送訂閱項目,做為 sp_addpushsubscription_agent 的包裝函式預存程序。
- db:已發布的資料庫。
- publication:要新增推送訂閱代理程式的發布項目名稱。
- subscriber_db:訂閱者上的資料庫。
- subscriber_login:連線至訂閱端時使用的登入資訊。
- subscriber_password:連線至訂閱端時使用的密碼。
- subscriber:訂閱端執行個體的 IP 名稱。這個值可以指定為:
<Hostname>,<PortNumber>
msdb.dbo.gcloudsql_transrepl_addmonitoraccess
語法
exec msdb.dbo.gcloudsql_transrepl_addmonitoraccess @login
說明
提供複製監視器的存取權,以及散發資料庫中複製相關資料表的 SELECT 陳述式。
- login:用於存取複製監視器的登入資訊。
msdb.dbo.gcloudsql_transrepl_changedistributor_property
語法
exec msdb.dbo.gcloudsql_transrepl_changedistributor_property @property,@value
說明
這個預存程序會變更 heartbeat_interval,並包裝 sp_changedistributor_property。詳情請參閱 sp_changedistributor_property 的說明文件。如要進一步瞭解 heartbeat_interval 值,也請參閱該說明文件。
- property - 發布資料庫的屬性。
- value:為指定屬性提供的值。
msdb.dbo.gcloudsql_transrepl_dropsubscriber
語法
exec msdb.dbo.gcloudsql_transrepl_dropsubscriber @subscriber
說明
移除訂閱者,做為 sp_dropsubscriber 的包裝函式預存程序。
- subscriber:要捨棄的訂閱端 IP 名稱。這個值可以指定為:
<Hostname>,<PortNumber>
msdb.dbo.gcloudsql_transrepl_remove_distribution
語法
exec msdb.dbo.gcloudsql_transrepl_remove_distribution
說明
移除發布設定,做為下列項目的包裝函式預存程序:sp_dropdistpublisher、sp_dropdistributiondb 和 sp_dropdistributor。
用於設定資料庫相容性層級的預存程序
如要瞭解資料庫相容性層級,請參閱「ALTER DATABASE (Transact-SQL) 相容性層級」。
msdb.dbo.gcloudsql_set_compat_level_for_master_db
語法
EXEC msdb.dbo.gcloudsql_set_compat_level_for_master_db @compatibility_level
說明
設定 master 資料庫的相容性層級。在 SQL Server 適用的 Cloud SQL 中,使用者沒有直接修改 master 資料庫所需的權限。這個預存程序可讓您變更相容性層級,做為 ALTER DATABASE [master] SET COMPATIBILITY_LEVEL 指令的包裝函式。
- compatibility_level:整數值,指定要套用的相容性層級 (例如 130、140 或 150)。值必須大於或等於 130。
用於匯出登入資訊的預存程序
如要瞭解如何匯出登入資訊,請參閱「匯出 SQL Server 登入資訊」。
msdb.dbo.sp_help_revlogin
語法
EXEC msdb.dbo.sp_help_revlogin [@login_name = 'LOGIN_NAME']
說明
產生包含 CREATE LOGIN 陳述式的 Transact-SQL (T-SQL) 指令碼,用於從 SQL Server 適用的 Cloud SQL 執行個體轉移登入資訊、安全性 ID (SID) 和密碼雜湊。
如要在 msdb 資料庫中安裝 sp_help_revlogin 預存程序,請在執行個體上啟用 cloud sql enable sp_help_revlogin 資料庫旗標。
- login_name:(選用) 指定要匯出的特定登入名稱。如果省略或設為
NULL,預存程序會為所有符合條件的登入產生指令碼。
預存程序會使用 T-SQL PRINT 陳述式輸出產生的指令碼,而非表格結果集。Cloud SQL Studio 只會顯示表格形式的查詢結果,因此請使用 SQL Server Management Studio (SSMS)、安裝 MSSQL 擴充功能的 Visual Studio Code 或 sqlcmd 等用戶端工具,查看及匯出產生的指令碼。
sp_help_revlogin 會自動排除 Google Cloud 服務帳戶、內部 SQL Server 系統帳戶 (例如開頭為 ## 的登入資訊),以及指派給 sysadmin 或其他受限管理伺服器角色的登入資訊。
後續步驟
- 瞭解如何匯出 SQL Server 登入資訊。
- 瞭解如何啟用變更資料擷取 (CDC)。
- 瞭解如何設定外部副本。