設定資料庫旗標

本頁面說明如何設定 Cloud SQL 的資料庫旗標,並列出可為執行個體設定的旗標。您可以使用資料庫標記執行許多作業,包括調整 SQL Server 參數、調整選項,以及設定及調整執行個體。

設定、移除或修改資料庫執行個體的標記時,資料庫可能會重新啟動。移除之前,系統都會保留執行個體的旗標值。如果執行個體是備用資源的來源,且重新啟動執行個體,備用資源也會重新啟動,以便與執行個體的目前設定保持一致。

設定資料庫旗標

設定資料庫旗標

控制台

  1. Google Cloud 控制台中,選取要設定資料庫旗標的 Cloud SQL 執行個體所在專案。
  2. 開啟執行個體並按一下 [編輯]
  3. 向下捲動至「旗標」區段。
  4. 如要設定在執行個體中未設定的標記,請按一下「Add item」,從下拉式選單中選擇標記,然後設定其值。
  5. 按一下 [儲存] 以儲存變更。
  6. 在「總覽」頁面的「標記」下方,確認您所做的變更。

gcloud

編輯執行個體:

gcloud sql instances patch INSTANCE_NAME --database-flags=FLAG1=VALUE1,FLAG2=VALUE2

這項指令會覆寫先前設定的所有資料庫標記。如要保留這些標記並新增新的標記,請加入您要在執行個體上設定的所有標記值;未明確加入的標記會設為預設值。如果標記未設定任何值,請指定標記名稱,後面加上等號 ("=")。

舉例來說,如要設定 1204remote accessremote query timeout (s) 標記,您可以使用下列指令:

gcloud sql instances patch INSTANCE_NAME \
  --database-flags="1204"=on,"remote access"=on,"remote query timeout (s)"=300

Terraform

如要新增資料庫旗標,請使用 Terraform 資源

resource "google_sql_database_instance" "instance" {
  name             = "sqlserver-instance-flags"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    database_flags {
      name  = "1204"
      value = "on"
    }
    database_flags {
      name  = "remote access"
      value = "on"
    }
    database_flags {
      name  = "remote query timeout (s)"
      value = "300"
    }
    tier = "db-custom-2-7680"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

套用變更

如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節中的步驟。

準備 Cloud Shell

  1. 啟動 Cloud Shell
  2. 設定要套用 Terraform 設定的預設 Google Cloud 專案。

    您只需為每個專案執行這個指令一次,而且可以在任何目錄中執行。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 設定檔中設定明確的值,系統就會覆寫環境變數。

準備目錄

每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。

  1. Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須包含 .tf 副檔名,例如 main.tf。在本教學課程中,檔案稱為 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您正在參考教學課程,可以複製各個章節或步驟中的程式碼範例。

    將範例程式碼複製到新建立的 main.tf 中。

    您可以視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。

  3. 查看並修改要套用至環境的範例參數。
  4. 儲存變更。
  5. 初始化 Terraform。這項操作只需對每個目錄執行一次。
    terraform init

    如要使用最新版的 Google 供應器,請視需要加入 -upgrade 選項:

    terraform init -upgrade

套用變更

  1. 檢查設定,並確認 Terraform 要建立或更新的資源是否符合您的預期:
    terraform plan

    視需要修正設定。

  2. 執行下列指令,並在提示中輸入 yes,即可套用 Terraform 設定:
    terraform apply

    等待 Terraform 顯示「Apply complete!」(套用完成) 訊息。

  3. 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。

刪除變更

如要刪除變更,請按照下列步驟操作:

  1. 如要停用防刪除功能,請在 Terraform 設定檔中將 deletion_protection 引數設為 false
    deletion_protection =  "false"
  2. 執行下列指令,並在提示中輸入 yes,即可套用更新的 Terraform 設定:
    terraform apply
  1. 如要移除先前透過 Terraform 設定套用的資源,請執行下列指令,並在提示中輸入 yes

    terraform destroy

REST v1

如要為現有資料庫設定標記,請按照下列步驟操作:

使用任何要求資料之前,請先替換以下項目:

  • project-id:專案 ID
  • instance-id:執行個體 ID

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

JSON 要求主體:

{
  "settings":
  {
    "databaseFlags":
    [
      {
        "name": "flag_name",
        "value": "flag_value"
      }
    ]
  }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

如果資料庫目前已設有標記,請修改前一指令以併入這些標記。PATCH 指令會以要求中指定的值覆寫現有的標記。

REST v1beta4

如要為現有資料庫設定標記,請按照下列步驟操作:

使用任何要求資料之前,請先替換以下項目:

  • project-id:專案 ID
  • instance-id:執行個體 ID

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

JSON 要求主體:

{
  "settings":
  {
    "databaseFlags":
    [
      {
        "name": "flag_name",
        "value": "flag_value"
      }
    ]
  }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

如果資料庫目前已設有標記,請修改前一指令以併入這些標記。PATCH 指令會以要求中指定的值覆寫現有的標記。

將所有標記清除為預設值

控制台

  1. Google Cloud 控制台中,選取要清除所有標記的 Cloud SQL 執行個體所屬專案。
  2. 開啟執行個體並按一下 [編輯]
  3. 開啟「資料庫標記」區段。
  4. 按一下畫面上所有顯示標記旁的 [X]
  5. 按一下 [儲存] 以儲存變更。

gcloud

清除執行個體中所有標記並轉為預設值:

gcloud sql instances patch INSTANCE_NAME \
--clear-database-flags

系統會提示您將重新啟動執行個體。

REST v1

清除現有執行個體的所有標記:

使用任何要求資料之前,請先替換以下項目:

  • project-id:專案 ID
  • instance-id:執行個體 ID

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

JSON 要求主體:

{
  "settings":
  {
    "databaseFlags": []
  }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

REST v1beta4

清除現有執行個體的所有標記:

使用任何要求資料之前,請先替換以下項目:

  • project-id:專案 ID
  • instance-id:執行個體 ID

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

JSON 要求主體:

{
  "settings":
  {
    "databaseFlags": []
  }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

判斷已為執行個體設定哪些資料庫標記

如要查看 Cloud SQL 執行個體已設定哪些旗標,請按照下列步驟操作:

控制台

  1. Google Cloud 控制台中,選取含有您要查看已設定資料庫標記的 Cloud SQL 執行個體的專案。
  2. 選取執行個體開啟其「Instance Overview」(執行個體總覽) 頁面。

    在「資料庫標記」區段下方會列出已設定的資料庫標記。

gcloud

取得執行個體狀態:

gcloud sql instances describe INSTANCE_NAME

在輸出中,資料庫標記會列示為 settings 底下的 databaseFlags 集合。如要進一步瞭解輸出內容中的標記表示法,請參閱「Instances Resource Representation」。

REST v1

列出已針對執行個體設定的標記:

使用任何要求資料之前,請先替換以下項目:

  • project-id:專案 ID
  • instance-id:執行個體 ID

HTTP 方法和網址:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

在輸出內容中,找出 databaseFlags 欄位。

REST v1beta4

列出已針對執行個體設定的標記:

使用任何要求資料之前,請先替換以下項目:

  • project-id:專案 ID
  • instance-id:執行個體 ID

HTTP 方法和網址:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

在輸出內容中,找出 databaseFlags 欄位。

支援的標記

Cloud SQL 僅支援本節所列的旗標。

Cloud SQL 標記 類型
可接受的值和附註
重新啟動
是否必要?
1204 (追蹤標記) boolean
on | off
1222 (追蹤標記) boolean
on | off
1224 (追蹤標記) boolean
on | off
2528 (追蹤標記) boolean
on | off
3205 (追蹤標記) boolean
on | off
3226 (追蹤標記) boolean
on | off
3625 (追蹤記錄旗標) boolean
on | off
4199 (追蹤標記) boolean
on | off
4616 (追蹤記錄旗標) boolean
on | off
7806 (追蹤標記) boolean
on | off
存取檢查快取值區計數 integer
0 ... 65536
存取檢查快取配額 integer
0 ... 2147483647
相依性遮罩 integer
2147483648 ... 2147483647
agent xps boolean
on | off
自動軟性數量限制已停用 boolean
on | off
cloud sql xe 值區名稱 string
Bucket 名稱開頭必須是 gs:// 前置字串。
cloud sql xe 輸出磁碟總大小 (mb) integer
10 ... 512
cloud sql xe 檔案保留時間 (分鐘) integer
0 ... 10080
cloud sql xe 上傳間隔 (分鐘) integer
1 ... 60
cloudsql enable linked servers boolean
on | off
平行處理費用門檻 integer
0 ... 32767
contained database authentication boolean
on | off
cross db ownership chaining boolean
on | off
游標門檻 integer
-1 ... 2147483647
預設全文語言 integer
0 ... 2147483647
default language integer
0 ... 32
已啟用預設追蹤功能 boolean
on | off
禁止使用觸發條件傳回的結果 boolean
on | off
已啟用外部指令碼 boolean
on | off
ft 檢索頻寬 (上限) integer
0 ... 32767
ft 檢索頻寬 (分鐘) integer
0 ... 32767
ft notify bandwidth (max) integer
0 ... 32767
ft notify bandwidth (min) integer
0 ... 32767
填充因子 (%) integer
0 ... 100
索引建立記憶體 (KB) integer
704 ... 2147483647
智慧門鎖 integer
5000 ... 2147483647
最大伺服器記憶體 (MB) integer
1000 ... 2147483647
Cloud SQL 可能會根據 Microsoft 建議的值,為執行個體設定這個旗標的值。詳情請參閱「特殊標記」。
最大文字替換大小 (b) integer
-1 ... 2147483647
最大工作者執行緒 integer
128 ... 65535
巢狀觸發條件 boolean
on | off
針對臨時工作負載進行最佳化 boolean
on | off
ph 逾時 (秒) integer
1 ... 3600
查詢限制器費用上限 integer
0 ... 2147483647
查詢等待時間 (秒) integer
-1 ... 2147483647
恢復間隔 (分鐘) integer
0 ... 32767
遠端存取 boolean
on | off
遠端登入逾時 (秒) integer
0 ... 2147483647
遠端查詢逾時 (秒) integer
0 ... 2147483647
轉換雜訊字詞 boolean
on | off
以兩位數字表示的年份截止日期 integer
1753 ... 9999
使用者連結 integer
0, 10 ... 32767
使用者選項 integer
0 ... 32767

特殊標記

本節提供 SQL Server 適用的 Cloud SQL 旗標相關資訊。

max server memory (mb)

這個標記會限制 Cloud SQL 可為其內部集區分配的記憶體量。一般建議將旗標值設為約 80%,以免 SQL Server 耗用 Cloud SQL 執行個體的所有可用記憶體。如果您將值設為大於 80%,可能會因為記憶體不足而導致不穩定、效能降低和資料庫當機。

如果您未為此標記設定值,Cloud SQL 會根據執行個體的 RAM 大小自動管理這個值。此外,如果您調整執行個體大小,Cloud SQL 會自動調整標記的值,以符合我們建議的新執行個體大小。這可確保資料庫有效運用資源,避免發生資源超額分配、當機和效能降低的問題。

疑難排解

問題 疑難排解
您想修改 Cloud SQL 執行個體的時區。

如要瞭解如何更新執行個體的時區,請參閱「執行個體設定」。

在 SQL Server 適用的 Cloud SQL 中,您可以使用 AT TIME ZONE 函式進行時間轉換等作業。如要進一步瞭解這個函式,請參閱 AT TIME ZONE (Transact-SQL)

後續步驟