sql server(日本語記事)
35 TopicsHow to Capture Running Queries in SQL Server
(本記事の最後に日本語でもご案内しております) Sometimes, you need to check which queries are running in your SQL Server. If you want to understand what’s happening inside your SQL Server—such as diagnosing errors or slow performance—xEvents can be very helpful. 🔍 What is Extended Events (xEvents)? Extended Events is a lightweight performance monitoring system built into SQL Server. It helps you: ✅ Capture detailed information about queries, errors, and performance. ✅ Diagnose issues like slow queries or unexpected errors. ✅ Monitor safely with minimal overhead, compared to older tools like Profiler. Think of xEvents as a flight recorder for SQL Server: you start it, reproduce the issue, stop it, and then review what happened. You can find a step-by-step guide in the reference below. 📖 Quickstart: Extended Events - SQL Server | Microsoft Learn https://learn.microsoft.com/en-us/sql/relational-databases/extended-events/quick-start-extended-events-in-sql-server?view=sql-server-ver17 In this blog, I am sharing a T-SQL script that I usually provide to customers for troubleshooting support cases. 🛠 Step-by-Step Instructions The captured data will be saved as .xel files in the default SQL Server log folder (you can change this path if needed). Step 1: Create the xEvent Session Run the T-SQL script below on the target instance using an account with sysadmin rights or sufficient privileges to create an xEvent session. CREATE EVENT SESSION [XEventTmpl] ON SERVER ADD EVENT sqlserver.attention ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.error_reported ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.rpc_completed ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.rpc_starting ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.sp_statement_completed ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.sp_statement_starting ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.sql_batch_completed ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.sql_batch_starting ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.sql_statement_completed ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.sql_statement_starting ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ) ADD TARGET package0.event_file ( SET filename = N'xeventtmpl.xel' ) WITH (STARTUP_STATE = OFF); ✅ Step 2: Start Collecting Events Run this command to start the xEvent session so it begins capturing data: ALTER EVENT SESSION [XEventTmpl] ON SERVER STATE = START What this does: Turns on the session you created earlier. 💡Tip: To confirm it’s running status in SQL Server Management Studio (SSMS): Go to Management → Extended Events → Sessions Look for XEventTmpl in the list If it’s running, the icon will show a green arrow. If it’s stopped, it will show a red square. 🔍 View the Results To check the data you have collected with Extended Events in SQL Server Management Studio (SSMS): Go to Management → Extended Events → Sessions. Find and right-click on XEventTmpl. You can choose Watch Live Data to See the events as they happen, while the session is running. Alternatively, you can use the following query to read the .xel files directly: SELECT * FROM sys.fn_xe_file_target_read_file('xeventtmpl*.xel', NULL, NULL, NULL) 👁️ What This Captures The xEvents session will collect the following types of activity: sql_batch_starting / sql_batch_completed: Records when an ad-hoc T-SQL batch starts and ends. rpc_starting / rpc_completed: Records when a remote procedure call (RPC), such as one from an application using sp_executesql, begins and finishes. sp_statement_starting / sp_statement_completed: Records when each statement inside a stored procedure starts and completes. sql_statement_starting / sql_statement_completed: Records when a standalone T-SQL statement starts and finishes. error_reported: Captures whenever SQL Server reports an error, including the severity, error number, and message. attention: Indicates when a query is canceled or times out (for example, if a user presses cancel or there is a client timeout). For each event, the session also collects helpful details, such as: Action Description sql_text The exact T-SQL command that was run. client_app_name The name of the application (like SSMS or a .NET app) that sent the request. client_hostname The computer name where the request came from. client_pid The process ID of the client application. username The SQL Server login or user who ran the query. session_id The session ID (SPID) on SQL Server. ✅ Step 3: Stop the Session When you’re done collecting data, stop the session: ALTER EVENT SESSION [XEventTmpl] ON SERVER STATE = STOP If you no longer need the session, remove it completely: DROP EVENT SESSION [XEventTmpl] ON SERVER ❓ FAQ Q. Will this slow my server? A. No, Extended Events is lightweight and safe for short captures. https://learn.microsoft.com/en-us/sql/relational-databases/extended-events/extended-events Q. What permission do i need to run this query? A. You need either the ALTER ANY EVENT SESSION permission or, typically, sysadmin rights. Q. How do I share with Support? A. Please compress (zip) the .xel files from your target folder and attach them to your support case. Also, include the time when you reproduced the issue. Make sure you have reproduced the issue after starting the session in step 2, not just after creating the xEvent in step 1. If you have not changed the default output location, you can use the "Basic Log" scenario with the SQL_LogScout tool. This tool will also collect other important logs that are helpful for troubleshooting. For more details about SQL_LogScout, please visit: https://github.com/microsoft/SQL_LogScout Q. Can I use the same query to collect xEvents logs on Azure SQL Managed Instance (SQL MI)? A. On Azure SQL Managed Instance, xEvents cannot save files to a local server folder. Instead, you need to save the event file to Azure Blob Storage. To do this, please create a credential that matches your storage container’s URL, as shown below: CREATE CREDENTIAL [https://<storage-account>.blob.core.windows.net/<container-name>] -- change here WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<your-SAS-token>'; -- change here Next, update the filename in your event session to use the blob storage path instead of a local file path. For example: CREATE EVENT SESSION [XEventTmpl] ON SERVER …….. ADD TARGET package0.event_file( SET filename=N'https://<storage-account>.blob.core.windows.net/<container-name>/'xeventtmpl.xel' -- it should be blob url not local filepath ) 📘 SQL Server で実行中のクエリをキャプチャする方法 SQL Server の内部で「どんなクエリが流れているか」「どの操作でエラーが出ているか」を確認したいときは、拡張イベント(xEvents) が便利です。拡張イベントは SQL Server に標準搭載されている機能であり、パフォーマンスへの影響も軽微です。 拡張イベントの設定手順及び詳細につきましては、下記の公開情報に掲載されています。 クイック スタートの拡張イベント - SQL Server | Microsoft Learn https://learn.microsoft.com/ja-jp/sql/relational-databases/extended-events/quick-start-extended-events-in-sql-server?view=sql-server-ver17 本ブログでは、サポート対応時にお客様へご案内することが多い T-SQL スクリプトを使って、最小ステップでキャプチャを始める方法をご紹介します。 🛠 拡張イベント ログの収集方法 以下の手順では、SQL Server の既定ログ フォルダーにログを保存する設定となっておりますが、保存先は変更可能です。 ✅ ステップ1:拡張イベント セッションを作成する 対象のインスタンス上で、下記クエリを sysadmin のような拡張イベントセッションの作成に必要な権限を有するアカウントにて実行します。 CREATE EVENT SESSION [XEventTmpl] ON SERVER ADD EVENT sqlserver.attention ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.error_reported ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.rpc_completed ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.rpc_starting ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.sp_statement_completed ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.sp_statement_starting ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.sql_batch_completed ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.sql_batch_starting ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.sql_statement_completed ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ), ADD EVENT sqlserver.sql_statement_starting ( ACTION(package0.event_sequence,sqlserver.client_app_name, sqlserver.client_hostname, sqlserver.client_pid, sqlserver.database_id, sqlserver.database_name, sqlserver.query_hash, sqlserver.session_id, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.transaction_sequence, sqlserver.username) ) ADD TARGET package0.event_file ( SET filename = N'xeventtmpl.xel' ) WITH (STARTUP_STATE = OFF); ✅ ステップ2:拡張イベントの開始 以下のクエリを実行することで、拡張イベントの収集を開始できます。 ALTER EVENT SESSION [XEventTmpl] ON SERVER STATE = START 💡Tip: SQL Server Management Studio(SSMS)上で拡張イベントが有効になっているかをご確認いただく方法: ➤ SQL Server Management Studio(SSMS)を開き、[管理] → [拡張イベント] → [セッション] の順に展開します。 ➤ 一覧の中から 「XEventTmpl」 を見つけます。 ➤ セッションが実行中の場合は、アイコンに 緑色の矢印 が表示されます。停止中の場合は、赤色の四角形 が表示されます。 🔍 結果(収集データ)の確認方法 SQL Server Management Studio(SSMS)で拡張イベントの収集データを確認するには、以下の手順を実施してください。 SQL Server Management Studio(SSMS)を開き、[管理] → [拡張イベント] → [セッション] の順に展開します。 一覧の中から「XEventTmpl」を探して右クリックします。セッションが実行中の場合は「Watch Live Data」を選択し、リアルタイムでイベントを確認できます。 また、以下のクエリでも確認可能です。 SELECT * FROM sys.fn_xe_file_target_read_file('xeventtmpl*.xel', NULL, NULL, NULL) 👁️ 取得できる情報 このセッションでは、以下の種類のイベントを収集します。 sql_batch_starting / sql_batch_completed: アドホックな T-SQL バッチの開始と終了 rpc_starting / rpc_completed: sp_executesql などの RPC の開始と終了 sp_statement_starting / sp_statement_completed: ストアドプロシージャ内の各ステートメントの開始と完了 sql_statement_starting / sql_statement_completed: 単独の T-SQL ステートメントの開始と終了 error_reported: SQL Server が報告したエラー情報(重大度、エラー番号、メッセージなど) attention: クエリのキャンセルやタイムアウト時の記録 また、各イベントごとに以下のような詳細情報も収集されます。 アクション 説明 sql_text 実行された T-SQL コマンドの内容 client_app_name リクエスト元のアプリケーション名 client_hostname リクエスト元のコンピューター名 client_pid クライアント アプリケーションのプロセス ID username 実行ユーザーの SQL Server ログイン名 session_id SQL Server 上のセッション ID(SPID) ✅ ステップ3:拡張イベントの停止 以下のクエリを実行することで、拡張イベントの収集を停止できます。 ALTER EVENT SESSION [XEventTmpl] ON SERVER STATE = STOP 拡張イベントが不要な場合は、下記クエリを実行して削除します。 DROP EVENT SESSION [XEventTmpl] ON SERVER 🗂 保存先について: 収集されたログは、xeventtmpl_*.xel という名前で、SQL Server の既定ログフォルダーに保存されます。お問い合わせの際には、該当フォルダー全体を ZIP ファイルにまとめてご提供いただけますと、よりスムーズに調査を進めることができます。778Views1like1CommentSQL Server IaaS Agent 拡張機能の概要 (What is the Windows SQL Server IaaS Agent extension?)
English follows Japanese. こんにちは、 SQL Server サポート チームです。 今回は、SQL IaaS Agent 拡張機能と Azure 上の SQL 仮想マシン リソースについて解説します。 SQL Server IaaS Agent 拡張機能とは SQL Server IaaS Agent 拡張機能は、Azure Portal 上から Azure VM 上の SQL Server を管理・運用できるようにする拡張機能です。 SQL Server がインストール済みの Azure VM が Azure 上の 「SQL Server IaaS Agent 拡張機能」 に登録されると、その Azure VMに紐づいた 「SQL 仮想マシン」リソース が Azure Portal 上に作成され、SQL Server のライセンス等を管理するための画面をご利用いただけるようになります。 //SQL Server IaaS Agent 拡張機能とは SQL Server IaaS Agent 拡張機能とは (Windows) - SQL Server on Azure VMs | Microsoft Learn 拡張機能に登録する利点 SQL Server IaaS Agent 拡張機能を使用することで、様々な管理機能を有効化することが可能です。代表的な機能を後述いたします。 前提として、 SQL Server IaaS Agent 拡張機能に登録すると、既定では基本的な機能(SQL 仮想マシン管理画面の [ライセンスの種類] )のみが有効化された状態となります。 下記の弊社公開情報に「SQL IaaS Agent 拡張機能が必要です。」と記載されたいずれかの機能を有効化すると、SQL IaaS Agent 拡張機能用のサービスが Azure VM 上にインストールされます。 // Windows SQL Server IaaS Agent 拡張機能を使用して管理を自動化する - 機能面の利点 https://learn.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/sql-server-iaas-agent-extension-automate-management?view=azuresql&tabs=azure-portal#feature-benefits 代表的な機能 SQL IaaS Agent 拡張機能が持つ機能は、前述の弊社公開情報にまとめられております。 そのうち、代表的な機能をご紹介します。詳細は、前述の公開情報や、それぞれの説明に添えた公開情報を必要に応じてご参照ください。 自動バックアップ Azure VM での SQL Server 上のすべての既存および新規データベースのための Microsoft Azure へのマネージド バックアップが自動的に構成されます。 // Azure 仮想マシンでの SQL Server 2014 の自動バックアップ - SQL Server on Azure VMs | Microsoft Learn https://learn.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/automated-backup-sql-2014?view=azuresql //Azure VM 上の SQL Server の自動バックアップ SQL Server 2016 以降の自動バックアップ - SQL Server on Azure VMs | Microsoft Learn tempdb の構成 Azure Portal 上から tempdb の ストレージ構成を行うことが可能になります。 //Azure portal を使用して SQL Server VM を管理する - ストレージ https://learn.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/manage-sql-vm-portal?view=azuresql#storage Microsoft Entra 認証 SQL Server への認証に Microsoft Entra ID を使用することが可能になります。 //Azure VM 上の SQL Server に対する Microsoft Entra 認証を有効にする Microsoft Entra 認証を有効にする - SQL Server on Azure VMs | Microsoft Learn FAQ SQL Server IaaS Agent 拡張機能 は有料ですか? SQL Server IaaS Agent 拡張機能を使用する際、追加の費用等は発生いたしません。 SQL Server IaaS Agent 拡張機能 に登録する方法を教えてください。 Azure PowerShell や Azure CLI での手動登録、 Azure Portal でサブスクリプション単位でのIaaS Agent 拡張機能の自動登録機能を有効化する方法がございます。また、弊社の定期メンテナンスにより登録が行われる場合もあります。 //SQL IaaS Agent 拡張機能への自動登録 SQL IaaS Agent 拡張機能への自動登録 - SQL Server on Azure VMs | Microsoft Learn //Windows SQL Server VM を SQL IaaS Agent 拡張機能に登録する(手動登録) SQL IaaS Agent 拡張機能に登録する (Windows) - SQL Server on Azure VMs | Microsoft Learn 複数の SQL Server インスタンスがインストールされている環境で SQL Server IaaS Agent 拡張機能 をインストールすることは可能ですか? 複数の SQL Server インスタンスがある場合は既定のインスタンス (MSSQLSERVER) のみが拡張機能にサポートされます。具体的にサポートされる環境は以下となります。 1 つの既定のインスタンスのみがある環境。 複数のインスタンスがある場合は、Azure portal の拡張機能によって既定のインスタンスのみがサポートおよび管理されます。 既定のインスタンスがなく名前付きインスタンスが複数ある環境はサポートされていません。 インストールされているインスタンスが 1 つのみの場合は、1 つの名前付きインスタンスがサポートされます。 VM を削除すると SQL 仮想マシン リソースも削除されますか? 対象の SQL Server がインストールされた VM が削除されると、SQL 仮想マシンリソースも削除されます。 // ご参考) Azure VM 上の SQL Server についてよく寄せられる質問 (FAQ) - Azure SQL | Microsoft Learn https://learn.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/frequently-asked-questions-faq?view=azuresql ※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Hello, this is the SQL Server Support Team. In this article, we will explain the SQL IaaS Agent Extension and the SQL Virtual Machines resource on Azure. What is the SQL Server IaaS Agent extension? The SQL Server IaaS Agent Extension is a feature that enables you to manage and operate SQL Server installed on Azure VMs directly from the Azure Portal. When an Azure VM with SQL Server installed is registered with the "SQL Server IaaS Agent Extension" on Azure, a corresponding "SQL Virtual Machine" resource is created in the Azure Portal. This allows you to access a management interface for SQL Server licensing and other settings. //What is the SQL Server IaaS Agent extension? What is the SQL Server IaaS Agent extension? (Windows) - SQL Server on Azure VMs | Microsoft Learn Benefits of Registering the extension By using the SQL Server IaaS Agent Extension, you can enable various management features. Some of the key features are introduced below. By default, when a VM is registered with the SQL Server IaaS Agent Extension, only the basic functionality (such as the "SQL Server License" setting in the SQL Virtual Machine management) is enabled. When you enable any of the features listed in the Microsoft documentation that states "Requires SQL IaaS Agent extension.", the extension service is installed on the Azure VM. //Automate management with the Windows SQL Server IaaS Agent extension - Feature benefits https://learn.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/sql-server-iaas-agent-extension-automate-management?view=azuresql&tabs=azure-portal#feature-benefits Key Features The features provided by the SQL IaaS Agent Extension are summarized in the documentation above. Here are some of the most notable ones. For more details, please refer to the linked documentation. 1. Automated backup Automated Backup automatically configures Managed Backup to Microsoft Azure for all existing and new databases. //Automated Backup for SQL Server 2014 virtual machines (Resource Manager) Automated Backup for SQL Server 2014 Azure virtual machines - SQL Server on Azure VMs | Microsoft Learn //Automated Backup for SQL Server on Azure VMs Automated Backup for SQL Server 2016 and later - SQL Server on Azure VMs | Microsoft Learn 2. Configure tempdb You can configure tempdb storage directly from the Azure Portal. //Manage SQL Server VM using Azure Portal - Storage | Microsoft Learn https://learn.microsoft.com/en-us/azure/azure-sql/virtual-machines/windows/manage-sql-vm-portal?view=azuresql#storage 3. Microsoft Entra authentication You can use Microsoft Entra ID for authentication to SQL Server. //Enable Microsoft Entra authentication for SQL Server on Azure VMs Enable Microsoft Entra authentication - SQL Server on Azure VMs | Microsoft Learn FAQ Q: Is the SQL Server IaaS Agent Extension a paid feature? A: No, there are no additional costs for using the SQL Server IaaS Agent Extension. Q: How can I register with the SQL Server IaaS Agent Extension? A: You can register manually using Azure PowerShell or Azure CLI or enable automatic registration at the subscription level via the Azure Portal. Registration may also occur during maintenance by Microsoft. //Automatic registration with SQL IaaS Agent extension Automatic registration with SQL IaaS Agent extension - SQL Server on Azure VMs | Microsoft Learn //Register Windows SQL Server VM with SQL IaaS Agent extension Register with SQL IaaS Agent Extension (Windows) - SQL Server on Azure VMs | Microsoft Learn Q: Can I install the SQL Server IaaS Agent Extension in an environment with multiple SQL Server instances? A: The SQL IaaS Agent extension supports the following environments: One default instance. If there are multiple instances, only the default instance is supported and managed by the extension in the Azure portal. Environments with multiple named instances without a default instance aren't supported. One named instance, if it's the only installed instance. Q: If I delete the VM, will the SQL Virtual Machine resource also be deleted? A: Yes, if the VM with SQL Server installed is deleted, the corresponding SQL Virtual Machine resource will also be removed. //Frequently asked questions for SQL Server on Azure VMs Frequently asked questions (FAQ) for SQL Server on Azure VMs - Azure SQL | Microsoft Learn Note: The content of this article (including attachments and linked pages) is current as of the time of writing and may be subject to change without notice.393Views2likes0Comments更新プログラム適用後、bcp.exe の出力メッセージが英語になる
English follows Japanese こんにちは。SQL Server サポート チームです。 事象 日本語版の SQL Server をインストールし、利用している環境で、SQL Server へ更新プログラムを適用後、bcp.exe の出力メッセージが英語になる場合があります。 接続先インスタンスを誤った場合の例: 本事象は、ODBCドライバーの修正が含まれた更新プログラムを適用する場合、更新プログラムに含まれるODBCドライバーのインストーラーは各言語版ではなく英語版での提供となり、更新プログラムを適用時にODBCドライバーの日本語リソースファイルが削除されるために発生します。 対処策 SQL Server の更新プログラムを適用後、日本語リソースファイルを再配置します。再配置手順は以下の通りです。 ODBC ドライバー(17.10.6.1)を例としてご説明します。 日本語リソースファイルを再配置方法: 1) 以下のサイトにアクセスし、リリース番号 17.10.6.1 ODBC ドライバー(日本語) をダウンロードします。 ODBC Driver for SQL Server のダウンロード - ODBC Driver for SQL Server | Microsoft Learn 2) ダウンロードしたファイル(msodbcsql.msi) を任意のフォルダーに配置します。 なお、後述の手順はC:\temp フォルダーにインストールしたインストーラーを配置した場合の例です。 3) 管理者権限でコマンドプロンプトを起動し、下記のコマンドを実行し、ダウンロードしたインストーラーを展開します。 msiexec /a "C:\temp\msodbcsql.msi" /qb targetdir="C:\temp\msodbcsql_msi" 4) 展開したフォルダーにある msodbcsqlr17.rll を次の配置先のフォルダーにコピーします。 ※ 配置先のフォルダー C:\Windows\System32\1041 が存在しない場合は、フォルダーを作成したうえで msodbcsqlr17.rll をコピーします。 コピー元: C:\temp\msodbcsql_msi\Windows\System32\1041 配置先: C:\Windows\System32\1041 5) bcp.exe の出力メッセージが日本語となるか確認します。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Hello, this is the SQL Server Support Team. Issue In environments where the Japanese version of SQL Server is installed and used, after applying an update to SQL Server, the output messages from bcp.exe may appear in English. Example when connecting to the wrong instance: This issue occurs when the update includes a fix for the ODBC driver. The installer for the ODBC driver included in the update is provided in English rather than in each localized language version. As a result, the Japanese resource file for the ODBC driver is deleted during the update process. Resolution After applying the SQL Server update, relocate the Japanese resource file. The steps below explain how to do this using ODBC Driver version 17.10.6.1 as an example. Steps to relocate the Japanese resource file: 1) Access the following site and download the ODBC Driver version 17.10.6.1 (Japanese version): Download ODBC Driver for SQL Server - ODBC Driver for SQL Server | Microsoft Learn 2) Place the downloaded file (msodbcsql.msi) in any folder. The following steps assume the installer is placed in the C:\temp folder. 3) Open Command Prompt with administrator privileges and run the following command to extract the installer: msiexec /a "C:\temp\msodbcsql.msi" /qb targetdir="C:\temp\msodbcsql_msi" 4) Copy the msodbcsqlr17.rll file from the extracted folder to the following destination folder: If the destination folder C:\Windows\System32\1041 does not exist, create it before copying the file. Source : C:\temp\msodbcsql_msi\Windows\System32\1041 Destination : C:\Windows\System32\1041 5) Confirm that the output messages from bcp.exe are displayed in Japanese.1.3KViews0likes0CommentsWindows Server 2025 にインストールしたSQL Server の更新プログラムを削除する方法
こんにちは。SQL Server サポート チームです。 事象 Windows Server 2025 にインストールしたSQL Server に対して適用した更新プログラムが、Uninstall Updates(更新プログラムをアンインストール) 画面に表示されません。 // Microsoft SQL Browser とMicrosoft SQL Server VSS Writer は表示されますが、SQL Server は表示されない 対処策 SQL Server の更新プログラムをアンインストールする必要がある場合は、以下の方法でアンインストールをお願いします。 SQL Server 2022 CU19(KB5054531) を例としてご説明します。 ※注意事項※ レジストリ エディターまたは別の方法を使用してレジストリを誤って変更すると、深刻な問題が発生することがあります。 最悪の場合、オペレーティング システムの再インストールが必要になることがあります。 マイクロソフトは、レジストリの変更により発生した問題に関しては、一切責任を負わないものとします。 そのため、十分に注意のうえ、作業ください。 SQL Server の更新プログラム(KB5054531) のアンインストール方法: 1) スタートボタン -> ファイル名を指定して実行 から「regedit.exe」と入力し、「OK」をクリックします。 2) レジストリエディターが起動したら、以下のレジストリ キーを開きます。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB5054531 3) UninstallString をダブルクリックして表示される画面から、[値のデータ] に記載の内容をコピーします。 4) コマンドプロンプトを管理者で起動し、手順3 でコピーしたコマンドを実行します。 5) 更新プログラムをアンインストールする画面が表示されるため、指示に従い更新プログラムのアンインストールを進めます。 以下のように[状態] が全て[成功] となっていれば、SQL Server の更新プログラムをアンインストールすることができたと判断できます。 6) コマンドプロンプトとレジストリエディターの画面を閉じます。746Views0likes0CommentsSQL Server の更新プログラム GDR, CU, Service Pack の違いと適用可否
こんにちは、 SQL Server サポートです。 今回は、SQL Server の GDR, CU, Service Pack の違いと適用可否について紹介します。 GDR、CU、Service Pack の違い SQL Server の更新プログラムには主に GDR, CU, Service Pack の3種類があります。 GDR (General Distribution Release) 主にセキュリティ関連の修正を提供します。 そのバージョンのSQL Server の以前のGDR のすべての修正を含みます。 例えば、CU も GDR も適用していない SQL Server 2019 で、SQL Server 2019 向けの GDR5 を適用すると、GDR1~GDR4の修正も適用されます。 そのため、GDR1 → GDR2 → GDR3 →・・・のように段階的に適用する必要はありません。 CU (Cumulative Update) 機能改善やバグ修正を含む更新を提供します。 そのバージョンのSQL Server の以前のCU や以前のGDR のすべての修正を含みます。 例えば、CU も GDR も適用していない SQL Server 2019 で、SQL Server 2019 向けの CU5 を適用すると、CU1~CU4の修正も適用されます。 そのため、CU1 → CU2 → CU3 →・・・のように段階的に適用する必要はありません。 Service Pack 大規模な更新を提供し、複数の修正や新機能をまとめて提供します。 そのバージョンのSQL Server の以前のService Pack や以前のCU、以前のGDR のすべての修正を含みます。 そのため、例えば どの Service Pack も適用していない SQL Server 2016 で、Service Pack 3 を適用したい場合、 Service Pack1 → Service Pack2 → Service Pack3 のように段階的に適用する必要はありません。 ただし、どの Service Pack も適用していない SQL Server 2016 で Service Pack 3用の CU や GDR を適用したい場合は、Service Pack3 → 目的の CU や GDR のように適用する必要があります。 なお、Service Pack は SQL Server 2016 以前で提供されていました。 シンプルで予測可能なメインストリームサービス ライフサイクルを採用したため、SQL Server 2017 以降ではService Pack は存在せず、CU と GDR のみとなります。 GDR、 CU、 Service Pack の適用可否 ・GDR を適用済みの SQL Server には、より新しい GDR か Service Pack か CU が適用できます。 ・CU を適用済みの SQL Server には、より新しい CU か Service Pack が適用できます。 ・Service Pack が適用済みのSQL Server で、かつ CU も GDR も適用していない場合は、その Service Pack 用の CU または その Service Pack 用の GDR を適用できます。 各バージョンの SQL Server の最新の更新プログラムは下記から確認できます。 // SQL Server の最新の更新プログラムとバージョン履歴 - SQL Server | Microsoft Learn https://learn.microsoft.com/ja-jp/troubleshoot/sql/releases/download-and-install-latest-updates ※参考情報 // Announcing the Modern Servicing Model for SQL Server | Microsoft Community Hub https://techcommunity.microsoft.com/blog/sqlserver/announcing-the-modern-servicing-model-for-sql-server/385594 // SQL Server 累積的更新プログラム (CU) のインストールに関する一般的な問題のトラブルシューティング - SQL Server | Microsoft Learn https://learn.microsoft.com/ja-jp/troubleshoot/sql/database-engine/install/windows/sqlserver-patching-issues#cumulative-update-and-service-pack-installation-information // SQL Server のサービス モデル - SQL Server | Microsoft Learn https://learn.microsoft.com/ja-jp/troubleshoot/sql/releases/servicing-models-sql-server ※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。4.2KViews1like0CommentsSQL Server がインストールされていないAzure VM において、「Failed to find SQL instance to target」を含むメッセージが記録される
こんにちは。SQL Server サポート チームです。 事象 SQL Server がインストールされていないAzure VM において、Windows イベントログのアプリケーションログに以下のメッセージが記録される場合があります。 -- ソース Microsoft SQL Server IaaS Agent Setup -- メッセージ Failed to find SQL instance to target. Skipping 'NT Service\\SQLIaaSExtensionQuery' removal from sql logins. メッセージの原因 SQL IaaS Agent 拡張機能への自動登録機能を有効化しているサブスクリプションにおいては、Azure VM に対して SQL Server がインストールされているかどうかを検出するジョブが毎月実行されます。 また、自動登録機能が有効化されているかどうかに関わらず、弊社の計画メンテナンスによって、SQL Server がインストールされているかどうかを検出するジョブが実行されます。 したがって、上述のジョブによりAzure VMにSQL Serverがインストールされていないことを検出したことが発生原因となります。 ※計画メンテナンスのタイミングは不定期です。 SQL IaaS Agent 拡張機能への自動登録の有効化状況については、Azure Portal から以下の手順で確認が可能です。 1.Azure portal にサインインします。 2.[SQL 仮想マシン] リソース ページに移動します。 3.[SQL Server VM の自動登録](Automatic SQL Server VM registration) を選択して、 [SQL Server VM の自動登録](Automatic SQL Server VM registration) ページを開きます。 4.登録済みの場合は以下のように表示されます。 SQL IaaS Agent 拡張機能への自動登録の詳細につきましては、下記の公開情報をご確認ください。 SQL IaaS Agent 拡張機能への自動登録 https://learn.microsoft.com/ja-jp/azure/azure-sql/virtual-machines/windows/sql-agent-extension-automatic-registration-all-vms?view=azuresql&tabs=azure-cli 影響 SQL ServerがインストールされていないAzure VMにて記録されたものであれば、本メッセージによる影響はありません。 対処策 本メッセージはジョブの出力結果として記録されるため、出力を止めることはできません。 監視ツールなどで監視されている場合は、必要に応じて監視対象から除外してください。2.1KViews0likes0CommentsSQL Server 2022 分散型可用性グループにおける同期失敗
こんにちは。SQL Server サポート チームです。 今回は、分散型可用性グループにおける同期が突然失敗する事象についてご紹介します。 事象 SQL Server 2022 で分散型可用性グループを構成し FILESTREAM を使用している環境において、正常に稼働していた分散型可用性グループが突如同期に失敗し、同期の状態が NOT_HEALTHY になります。 <事象発生構成> ・SQL Server 2022 ・分散型可用性グループ ・FILESTREAM 原因 前提として、FILESTREAM の機能はログの順序性が重要になっています。 SQL Server 2022 より、パフォーマンス向上を目的に分散型可用性グループ間で、下記の弊社公開情報に記載している通り複数の TCP 接続を使用できるようになりました。 SQL Server 2022 の新機能により複数の TCP セッションからログを転送することで、FILESTREAM の内部的なログの順序がずれてしまうことで、同期に異常が発生することが原因です。 本事象についてはSQL Server 2022 の動作上の制限になります。 SQL Server 2022 (16.x) の新機能 - 可用性 https://learn.microsoft.com/ja-jp/sql/sql-server/what-s-new-in-sql-server-2022#availability ***** 分散型可用性グループ - tcp 待機時間が長いリモート リンク間のネットワーク帯域幅使用率を向上させるために、複数の TCP 接続を使用するようになりました。 ***** 対処策 本事象の対処策は、トレースフラグ 5597 を設定することです。 トレースフラグ 5597 は、SQL Server 2022の新機能(分散型可用性グループにおける複数TCP使用) を無効するのみで、以前のバージョンと同等な動作となり、他への影響はありません。 変更手順 トレースフラグ 5597 の設定方法は、以下の通りです。 トレースフラグ設定方法 -------------------------------- 1) SQL Server Configuration Manager (構成マネージャー)を起動します。 2) SQL Serverのサービス-> SQL Server (MSSQLSERVER もしくは インスタンス名) を右クリックし、プロパティを開きます。 3) [起動時のパラメーター] タブの[起動時のパラメーターの指定] ボックスに下記の値を入力し、[追加] をクリックします。 -T5597 5) [OK]をクリックし、設定を確定します。設定は、次回SQL Server サービス起動後に有効になります。1.3KViews0likes0Comments