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 ファイルにまとめてご提供いただけますと、よりスムーズに調査を進めることができます。252Views1like1CommentSQL 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.172Views2likes0Comments更新プログラム適用後、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.845Views0likes0CommentsWindows 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) コマンドプロンプトとレジストリエディターの画面を閉じます。263Views0likes0CommentsSQL 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 ※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。1.7KViews1like0Commentsパフォーマンスログ採取手順
こんにちは。SQL Server サポート チームです。 今回は、SQL Server で問題が起きた際の調査に使用するパフォーマンスログの採取方法についてご案内します。 ■概要 よく弊社にお問合せいただく問題の中で「クエリタイムアウトが発生した」、「接続タイムアウトが発生した」、「クエリのパフォーマンスが劣化した」といった調査にはパフォーマンスログの取得を依頼させていただいております。 パフォーマンスログからは、「CPU 利用率」や「メモリ使用量」、「ディスク I/O の使用量」、「SQL Server の動作状況」などの情報が含まれます。 これらを見ることで、SQL Server が動作していた時のリソースの使用状況などから問題の状況について確認し、通常時の情報と比較することで問題の傾向を確認することができます。 本記事では下記について記載いたします。 ・採取する際の注意事項 ・GUIを使用した採取手順 ・バッチを使用した採取手順 ・最大サイズを指定してローテーションさせるオプションの設定 ・特定のイベントが発生したタイミングでパフォーマンスログの採取を停止させる方法 ■1.採取する際の注意事項 パフォーマンスログの採取は比較的、サーバーへの負荷は低く、該当マシンへの影響は低いですが、万が一影響が出た場合には早急に停止してください。 また、ログの出力先は十分な空き領域がある事をご確認ください。 出力されるログの量は環境に依存するため、対象の環境で少しの間採取して、出力される量をご判断ください。 ■2.GUIを使用した採取手順 1) [パフォーマンスモニター] を検索し、起動します。 2) 左ペインの [データコレクタセット] を展開します。 3) [ユーザー定義] を右クリックし、[新規作成] -> [データコレクタセット] を選択します。 4) 名前を指定し、[手動で作成する] を選択した上、[次へ] を押します。 5) [データログを作成する] + [パフォーマンスカウンター] を選択し、[次へ] を押します。 6) 追加を選択します。 7) 以下の例に沿って、後述のパフォーマンスカウンターを追加していきます。 例1) 採取するカウンタが下記の場合 - [Processor] : 選択したオブジェクトのインスタンス:<すべてのインスタンス> % Privileged Time 「パフォーマンス オブジェクト」で [Processor] を展開、[% Privileged Time] を選択します。 「選択したオブジェクトのインスタンス」で <すべてのインスタンス> を選択します。 -> "追加" を押します。 例2) 採取するカウンタが下記の場合 - [Processor] : 選択したオブジェクトのインスタンス:<すべてのインスタンス> 全てのカウンタ 「パフォーマンス オブジェクト」で [Processor] を展開し、全てのカウンタが選択されていることを確認し、「選択したオブジェクトのインスタンス」で <すべてのインスタンス> を選択します。 -> "追加" を押します。 <採取対象のカウンタ一覧> - [Logical Disk] : 選択したオブジェクトのインスタンス:すべてのインスタンス 全てのカウンタ - [Memory] : 全てのカウンタ - [Network Interface] : 選択したオブジェクトのインスタンス:すべてのインスタンス 全てのカウンタ - [NUMA Node Memory] 選択したオブジェクトのインスタンス:すべてのインスタンス 全てのカウンタ - [Paging File] : 選択したオブジェクトのインスタンス:すべてのインスタンス 全てのカウンタ - [Physical Disk] : 選択したオブジェクトのインスタンス:すべてのインスタンス 全てのカウンタ - [Process] : 選択したオブジェクトのインスタンス:すべてのインスタンス 全てのカウンタ - [Processor Information] : 選択したオブジェクトのインスタンス:すべてのインスタンス 全てのカウンタ - [Server] 全てのカウンタ - [Server Work Queues] 選択したオブジェクトのインスタンス:すべてのインスタンス 全てのカウンタ - [System] : Processor Queue Length、Context Switches/sec - [TCPv4] 全てのカウンタ - [TCPv6] 全てのカウンタ --------------------- ↓↓↓↓ 以下は SQL Server に関するカウンタとなります。 ↓↓↓↓ ※パフォーマンスオブジェクト名の "SQL Server" は、既定のインスタンスの場合となります。 名前付きインスタンスの場合、"SQL Server" の部分が "MSSQL$[名前付きインスタンス名]" となりますのでご注意下さい。 Windows Internal Database の場合、"SQL Server" の部分が "MSSQL$MICROSOFT##WID" となります。 --------------------- - [SQL Server: Access Methods] : 全てのカウンタ - [SQL Server: Availability Replica] : 全てのカウンタ ※このカウンターは AlwaysOn 可用性グループを構成している場合に追加してください。 - [SQL Server: Buffer Manager] : 全てのカウンタ - [SQL Server: Databases] : 選択したオブジェクトのインスタンス:すべてのインスタンス 全てのカウンタ - [SQL Server: Database Replica] : 全てのカウンタ ※このカウンターは AlwaysOn 可用性グループを構成している場合に追加してください。 - [SQL Server: General Statistics] : 全てのカウンタ - [SQL Server: Latches] : 全てのカウンタ - [SQL Server: Locks] : 選択したオブジェクトのインスタンス:すべてのインスタンス 全てのカウンタ - [SQL Server: Memory Manager] : 全てのカウンタ - [SQL Server: Memory Node] : 選択したオブジェクトのインスタンス:すべてのインスタンス 全てのカウンタ - [SQL Server: SQL Statistics] : 全てのカウンタ - [SQL Server: Transactions] : 全てのカウンタ - [SQL Server: Wait Statistics] : 選択したオブジェクトのインスタンス:すべてのインスタンス 全てのカウンタ 😎 全てのカウンタを追加した事を確認し、[OK] を押します。 9) サンプルの間隔を 3 秒へ設定し、[次へ] を押します。 10) [ルートディレクトリ] にデータの保存場所を選択し、[次へ] を選択します。 11) [保存して閉じる] を選択し [完了] を押します。 12) 左ペインの [データコレクタセット] -> [ユーザー定義] に作成したデータコレクタセットが表示されます。右クリックから、開始を選択することでカウンタの採取が開始します。 ※ 右クリックから、停止を選択することでカウンタの採取が停止します。 13) 10) で指定されたフォルダに作成されたログ ファイルを採取します。 ■3.バッチを使用した採取手順 このバッチは GUI を使用した採取手順でご案内したデータコレクタセットを、お客様の環境 (インスタンス名) に合わせて自動で作成するものとなっております。 バッチの既定の設定は下記となります。 必要に応じて[◆3.1.データコレクタセットの名称、データコレクタセットのルートディレクトリ (データの保存場所) の変更方法]や[◆3.2.データコレクタセットのサンプルの間隔の変更方法]の手順を参考に変更ください。 データコレクタセットの名称:mytest データコレクタセットのルートディレクトリ (データの保存場所) :bat ファイルと同じディレクトリの Log フォルダ配下 データコレクタセットのサンプルの間隔: 3 秒 また、データコレクタセットの作成後は、◆3.3.の手順を参考に正しくカウンタが登録されていることをご確認のうえ、データを取得いただくようお願いいたします。 ◆3.1.データコレクタセットの名称、データコレクタセットのルートディレクトリ (データの保存場所) の変更方法 本手順は必須ではないため、必要に応じて実施してください。 採取用スクリプト (PerfCollector_v1.0.zip) 内の create.bat を編集し、下記の変数 collectorname, location の値を書き換えることで作成するデータコレクタセットの設定を変更します。 set collectorname=mytest set location=.\logs ※データコレクタセット作成後に GUI で変更することも可能です。 ◆3.2.データコレクタセットのサンプルの間隔の変更方法 本手順は必須ではないため、必要に応じて実施してください。 下記の [◆3.3.データコレクタセットのカウンター確認方法] の手順 1-3 を実施し、手順 4 の [プロパティ] の [サンプル間隔] で変更できます。 ◆3.3.データコレクタセットのカウンター確認方法 1) [パフォーマンスモニター] を検索し、起動します。 2) 左ペインの [データコレクタセット] を展開します。 3) [ユーザー定義] を展開し、左ペインで変更したいデータコレクタセット (画像では mytest です) をクリックし、変更したい [パフォーマンスカウンター] (画像は mytest です) を右クリックし、プロパティを開きます。 4) [プロパティ] より現在追加されているパフォーマンスカウンターを確認します。 ◆3.4.(実行方法) 1) 採取用スクリプト (PerfCollector_v1.0.zip) を資料採取対象のマシンの任意の場所にコピーし展開します。 2) [コマンドプロンプト] を検索し、[管理者として実行] より起動します。 3) ポップアップが表示されますので "はい" をクリックします。 4) タイトルに "管理者: コマンドプロンプト" が表示されていることをご確認します。 5) PerfCollector_v1.0 を展開したフォルダーに移動し、PerfCollector_v1.0 を以下のように実行します。 >create 6) コマンドプロンプトでエラーが返ってこないことを確認します。 7) [◆3.3.データコレクタセットのカウンター確認方法] を参照して、登録されたカウンタを確認します。 8 ) [■2.GUIを使用した採取手順] の手順 12 以降を参照して、情報採取を開始してください。 ■4.最大サイズを指定してローテーションさせるオプションの設定 本手順は必須ではないため、必要に応じて実施してください。 1) [パフォーマンスモニター] を検索し、起動します。 2) 左ペインの [データコレクタセット] を展開します。 3) [ユーザー定義] をクリックし、変更したい [データコレクタセット] (画像は mytest です) を右クリックし、プロパティを開きます。 4) [停止条件] タブにて、"最大サイズ" チェックボックスをオンにし、ログ サイズを指定して [OK] ボタンをクリックします。 ここで指定したサイズが小さいと現象発生時の情報が上書きされる可能性がございますため、指定するサイズには十分ご注意ください。 ※ 一定期間採取を実施していただき、その実績を基に設定する方法をご検討ください。 ※ 循環設定での最大サイズの上限は 4GB 未満となります。そのため、最大サイズは 1GB ~ 3.5GB 程度に設定することをお奨めいたします。(画像は 2GB です。) ※ 循環設定した状態で OS を再起動すると、取得したパフォーマンスログが高い確率で破損するため、再起動前にデータコレクタセットでの採取を停止ください。 5) 変更したい [データコレクタセット] (画像では mytest です) をダブルクリックし、右ペインのパフォーマンス カウンタ DataCollector01 を右クリックしプロパティを選択します。 6) [ファイル] タブにて、[ログ モード] より "循環" を選択し、[OK] ボタンをクリックします。 以上の手順によって、設定ができました。 ■5.特定のイベントが発生したタイミングでパフォーマンスログの採取を停止させる方法 本手順は必須ではないため、必要に応じて実施してください。 1) [タスクスケジューラ] を検索し、起動します。 2) 右ペインの [タスクの作成] をクリックします。 3) [タスクの作成] ウィザード [全般] より、タスクの名前を入力し、[ユーザーがログオンしているかどうかにかかわらず実行する(W)]と[最上位の特権で実行する(I)] にチェックを入れます。(画像はタスクの名前を test としています) 4) [タスクの作成] ウィザード [トリガー] -> [新規] で [新しいトリガー] ウィザードが開かれるので、[タスクの開始] より [イベント時] を選択し、イベントについての設定をします。 問題となる事象に関する[イベント ID]を入力します。また、[遅延時間を指定する] にチェックを付け、15分間を選びます。 5) [タスクの作成] ウィザード [操作] -> [新規] で [新しい操作] ウィザードが開かれるので、[操作] より [プログラムの開始] を選択し、 [設定] -> [プログラム/スクリプト] に cmd.exe と入力し、[引数の追加] に /C "logman stop xxx" を入力します。( xxx はデータコレクタセットの名前を入れます。画像では mytest というデータコレクタセットを指定しています) 設定が終わったら [新しい操作] ウィザード [OK] を押して、操作の作成を完成します。 6) [タスクの作成] ウィザード [条件] -> [電源] より、必要に応じて [コンピュータを AC 電源で使用している場合のみタスクを開始する] のチェックを外す。 7) [タスクの作成] ウィザード [OK] より、タスクの作成を完了する。 以上の手順によって、設定ができました。 上記手順で採取した情報をマイクロソフトのサポートまでお寄せいただきますようお願いいたします。 どうぞ、よろしくお願いいたします。78KViews0likes0CommentsSQL Server x86 版の更新プログラム適用による、x64 版 FCI 構成への影響
こんにちは。SQL Server サポート チームです。 今回は1つの OS 上に SQL Server x64 版 と x86 版が両方インストールされており、x64 版でフェールオーバークラスターインスタンス(以下、FCI)を構成している環境に対して、x86 版の更新プログラムを適用した場合に発生する問題について説明します。 本現象が発生すると、FCI 構成の SQL Server の役割を移動(フェールオーバー)する際に失敗しますので、発生した場合は後述する回避策を実施ください。 ■概要 任意のバージョンの SQL Server x64 版と、x86 版を両方インストールしている環境に、x86 版の更新プログラムを適用した場合、FCI で使用する x64 版用の DLL ファイルが、意図せず x86 版用の DLL ファイルで置き換えられてしまう事があります。 具体的には、x86 版の更新プログラムの動作により、本来 x86 版用の「C:\Windows\SysWOW64\SQSRVRES.DLL」を置き換えるべきところが、誤って x64 版用の「C:\Windows\System32\sqsrvres.dll」を置き換えてしまうことによって発生します。 なお、「C:\Windows\System32\sqsrvres.dll」や「C:\Windows\SysWOW64\SQSRVRES.DLL」は、FCI 構成において、役割の移動時などリソースの操作や管理に使用されるライブラリです。 ■影響 x64 版の SQL Server にて FCI を構成している環境において本現象が発生すると、「C:\Windows\System32\sqsrvres.dll」がx86 版用のファイルで置き換えられたノードに SQL Server の役割を移動(フェールオーバー)させようとすると、エラーとなり役割の移動(フェールオーバー)や起動が行えません。 ■発生条件 以下の条件を全て満たす場合に発生します。 ・SQL Server(x64)の任意のバージョンで FCI 構成をしているインスタンスが存在する。 ・SQL Server(x86)のインスタンスが存在する。 ※ SQL Server 2016 以降 64ビット OS で 32ビットで稼働する WOW64 のサポートが終了しているため、SQL Server 2014 以前が対象となります。 ・C:\Windows\SysWOW64 フォルダーに SQSRVRES.DLL が存在する。 ■問題が発生する手順 ・SQL Server(x86) のインスタンスに更新プログラムを適用します。 ■発生状況の確認方法 「C:\Windows\System32\sqsrvres.dll」が、下記例のようなパスに格納される x86 版のファイルと同じであれば、本現象が発生していると判断できます。 同じか否かは、ファイルのプロパティを開き、[詳細] タブから [製品バージョン] を比較することが可能です。 (x86 版の sqsrvres.dll の格納先例) C:\Program Files (x86)\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\Binn\SQSRVRES.DLL ※ バージョン(12)やインスタンス ID(SQLEXPRESS)により上記パスは異なります。適宜読み替えてください。 ■回避策 上記条件に該当する環境にて、x86 版 SQL Server の更新プログラムを適用する際、適用前に「C:\Windows\SysWOW64\」に「SQSRVRES.DLL」がある場合には、削除を行ってください。 また、更新プログラムを続けて複数インストールする場合には、インストールした更新プログラムで「C:\Windows\SysWOW64\SQSRVRES.DLL」にファイルを配置する可能性があるため、各インストールごとに上記ファイルの削除の手順を実施ください。 ※ SQL Server の更新プログラムはサービスパックごとに累積型となっており、適用予定の更新プログラムのうち最新の更新プログラムを適用するのみで、対処可能ですので、併せてご検討ください。 既に「C:\Windows\System32\sqsrvres.dll」が置き換わってしまっている場合や、更新プログラムが多くあり上記回避策が難しい場合には、x64 版 SQL Sever のインストール フォルダーの「Binn」フォルダーより「SQSRVRES.DLL」を、「C:\Windows\system32\」へ、コピーすることで対処できます。 例) コピー元: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\ コピー先: C:\Windows\system32\ ※ バージョン(15)やインスタンスID(MSSQLSERVER)により上記パスは異なります。適宜読み替えて下さい。 ※ファイルが使用中で置き換えられない場合、クラスター サービスを停止する必要があります。まずは、パッシブノードから実施することをご検討ください。 以上となります。2.1KViews0likes0CommentsSQL Server 2019 の累積的な更新プログラム適用後に発生するイベント名 feature_restriction_usage が見つからないエラーについて
こんにちは SQL Server サポートチームです。 今回は SQL Server 2019 CU2 以降を適用した際に ERRORLOG に記録されるエラーについてご説明します。 ■概要 SQL Server 2019 CU2 以降で拡張イベントの"sqlserver.feature_restriction_usage"が廃止されたことにより、 累積的な更新プログラムを適用した後の初回起動時に、下記のエラーが記録されることがあります。 このエラーは更新プログラム適用後の一時的なものであり、無視していただいて問題ありません。 Error: 25623, Severity: 16, State: 1. The event name, "XXXXXXXXXXXXXXXX.sqlserver.feature_restriction_usage", is invalid, or the object could not be found Error: 25710, Severity: 16, State: 1. Event session "telemetry_xevents" failed to start. Refer to previous errors in the current session to identify the cause, and correct any associated problems. Error: 25709, Severity: 16, State: 1. One or more event sessions failed to start. Refer to previous errors in the current session to identify the cause, and correct any associated problems. ■発生条件 SQL Server 2019 CU1 以下のバージョンの SQL Server を使っている環境に対して、SQL Server 2019 CU2 以降の更新プログラムを適用することで発生します。 ■影響 このエラーによるお客様のアプリケーションへの影響はありません。 拡張イベントの"feature_restriction_usage"は、SQL Server CEIP サービス に関連して動作する拡張イベントセッション"telemetry_xevents"で使用されています。 SQL Server CEIP サービスは、Microsoft が SQL Server の使用状態に関する情報を収集する内部機能となっており、お客様のすべてのアプリケーションの動作には影響しません。 SQL Server CEIP サービスに関する詳細は下記の公開情報をご確認ください。 SQL Server の使用状況および診断データの収集を構成する (CEIP) https://docs.microsoft.com/ja-jp/sql/sql-server/usage-and-diagnostic-data-configuration-for-sql-server?view=sql-server-ver15 ■注意事項 SQL Server CEIP サービスを停止/無効化している環境や、SQL Server CEIP サービスが"telemetry_xevents"の定義を変更する前に、SQL Server サービスが再起動された場合は引き続きエラーが記録される可能性があります。 SQL Server CEIP サービスの無効化はサポートされないため、起動した状態にする必要があります。 なお、SQL Server CEIP サービスが起動した状態であれば拡張イベントセッションの定義変更は通常数分で完了し、定義変更後は基本的に自動で"telemetry_xevents"が起動するため特に操作は不要です。5KViews0likes0Comments