WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

SQLEXPRESS は「名前つきインスタンス」名

by WebSurfer 2012年11月12日 21:53

SQL Server の Express 版をインストールすると、デフォルトでは「名前つきインスタンス」となり、インスタンス名は SQLEXPRESS になります。

知ってました? 実は、自分は勘違いしていまして、SQLEXPRESS は Express 版の「既定のインスタンス」の名前だとばかり思っていました。(汗)

そうではなくて、一台のコンピューターにインストールできる「既定のインスタンス」は一つだけで、通常版/Express 版を問わず無名になるそうです。

時々 MSSQLSERVER という名前を目にしますが、どうやらそれはサービス名で、インスタンス名ではなさそうです。ちなみに、「名前つきインスタンス」のサービス名は MSSQL$<インスタンス名> になります。

詳しくは以下のページが参考になると思います。

名前付きインスタンスの使用

Windows サービス アカウントの設定

SQL Server 2012 Express のインストール

「既定のインスタンス」と「名前つきインスタンス」の主な違いは、名前の有無の他に、TCP/IP を利用してのリモート接続の際にポートが固定 (TCP 1433) になるか動的になるかです。

「名前つきインスタンス」の場合は、SQL Server の起動時に使用可能なポートが動的に割り当てられるので、接続には SQL Server Browser が必要になります。

ただし、「既定のインスタンス」が存在しなければ、Express 版を「名前付きインスタンス」SQLEXPRESS としてインストールしても、固定ポート (TCP 1433) を使うように設定を変更すれば SQL Server Browser を使用せずに接続することができます。

その場合、気をつけなければいけないのが接続文字列で、プロバイダに SqlClient を使用し SQLEXPRESS という名前の「名前つきインスタンス」に接続する場合は以下のいずれかに設定します。(2015/7/25 誤記訂正)

Data Source=tcp:<server name>
Data Source=tcp:<server name>,1433
Data Source=tcp:<server name>\SQLEXPRESS,1433

ちなみに、Data Source=tcp:<server name>\SQLEXPRESS とするとエラーになります。その理由は、サーバー名\インスタンス名で接続をした場合には、UDP 1434 (SQL Browser サービス) に接続して、指定したインスタンス名のポート番号を取得し、その後対象ポートに接続をする動作になるからだそうです。

また、プロバイダが Microsoft OLE DB Provider for SQL Server の場合、Data Source=tcp:<server name> ではエラーになるという報告もありますので注意してください。

詳しくは MSDN Forum のスレッド「SQLServer2008Expressにリモート接続できない」の Masayuki.Ozawa さんの書き込みを見てください。

Express 版のリモート接続のための設定は以下のページが参考になると思います。

SQL Server 2008 Express にリモート接続

上のページに、"リモート接続の場合、Windows 7/Vista では、Windows 認証を利用することはできません。" とありますが、Active Directory ドメイン環境でドメインアカウントを使用すれば Windows 認証は使用できます。

ワークグループ環境でも、以下のページに書いてある設定をすれば Windows 認証が使えるそうです(未検証です)。

ワークグループ環境にあるSQL SERVER 2005 EXPRESSでWINDOWS認証を使ってネットワーク接続する際の注意点

上の記事がリンク切れになると困るので、要点だけ書いておくと、サーバー / クライアント両方に同一 Windows ユーザーアカウントを設けて SQL Server の認証・承認の権限を与えるのはもちろん、ファイルの共有を無効にしておくことだそうです。(共有を有効にすると、サーバーに Guest としてアクセスしているとみなされるからだそうです。XP の話なので、Vista, 7, 8 でも同じかどうかは不明です)

Tags: ,

SQL Server

SQL Server のエラーコード

by WebSurfer 2012年11月10日 10:01

SQL Server のエラーコードを調べる方法を忘れないように書いておきます。

システムビュー sys.message

SQL Server のエラーメッセージはシステムビュー sys.messages に含まれており、それからエラーコードも取得できます。

日本語の一覧が見たければ SQL Server Management Studio などで以下のクエリを走らせると結果ウィンドウに表示されます。

SELECT message_id, severity, text
  FROM sys.messages
  WHERE language_id = 1041

下の画像は上のクエリを走らせた結果です。これから、例えば、PK 制約違反のエラーコード(message_id)は 2627 であることがわかります。

SQL Server のエラーコード

Tags:

SQL Server

SQL Server Express 更新時のトラブル

by WebSurfer 2011年12月17日 16:01

SQL Server 2008 Express を利用していますが、Service Pack を適用すると、毎回以下のようなエラーメッセージが表示され、接続できなくなるというトラブルに悩まされてきました。

"ユーザー インスタンスのプロセスを起動中のエラーにより、Sql Server のユーザー インスタンスを生成できませんでした。接続は閉じられます。"

次に Service Pack を適用する際また同じ問題が出ると思いますが、そのころには解決策を忘れてしまうので、自分のブログに備忘録として書いておきます。

SQL Server Express のデータファイル

SQL Server Express は上の画像に表示された mdf, ldf ファイルを自動的に作ります。具体的なことは分かりませんが、Service Pack の適用によってこれらのファイルとの整合が取れなくなることが原因のようです。これらを全部削除してしまえば問題は出なくなります。

Vista の場合、フォルダの場所は以下の通りです。

C:\Users\アカウント名\AppData\Local\Microsoft\Microsoft SQL Server Data\SQLEXPRESS

ユーザーインスタンスを使わない(接続文字列の User Instance を False にする)ことでも問題を回避できるそうです。ただ、それは解決にはなっていないですよね。

Tags:

SQL Server

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年3月  >>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

View posts in large calendar