質問者
VS Standard EdisionでSqlServerへのアクセス

質問
すべての返信
-
じゃんぬねっとさん、早速のご回答ありがとうございます。
1. connection string は
① public static string DBFile = \PartsMaster\PartsMaster.mdf";
がopen()のメソッド外にあり、以下がconnection stringです。
SqlConnectionStringBuilder connectStringBuilder = new SqlConnectionStringBuilder();
connectStringBuilder.DataSource = @".\SQLEXPRESS";
connectStringBuilder.AttachDBFilename = DBFile;
connectStringBuilder.IntegratedSecurity = true;
connectStringBuilder.UserInstance = true;
using (SqlConnection connection = new SqlConnection
(connectStringBuilder.ConnectionString))
{ connection.Open(); ...
2. ご指摘のToString()で出力した内容はコピーできませんのですべてここに書くことはで
きませんが、
先頭の日本語は「ユーザーの既定データベースを開けません。ログインに失敗しまし。
ユーザー’ASUS¥hide’はログインできませんでした。」とあり後長々と「場所 ....」がありました。
3.データベースはSQL Saver Management Studio Expressにて確認済みです。
以上、よろしくお願いいたします。例外コード表はどこにあるのでしょうか。
-
とりあえず、以下を試してみて下さい。
SQL Server のインスタンスに接続したときのエラー メッセージ : "ユーザーの既定データベースを開けません"
http://support.microsoft.com/kb/307864/ja>以上、よろしくお願いいたします。例外コード表はどこにあるのでしょうか。
SQLserver2000のBOL(Books Online)にはありますが、SQLserver2005のBOLでは見つけられていません。まだ無いのかなぁ?
-
ユーザーインスタンスが true になっているけど,
ユーザーインスタンスを使う場合は,
Accessのmdbファイルのようにファイルとして使う場合です。
あらかじめデータベースサーバーに.mdfファイルをアタッチしておかないで,
動的に使う場合です。目的がそうだとして,
ユーザーインスタンスを指定する場合,
.mdfのパスは絶対パスにするか,
exeの位置からの相対パスにする場合は,
|DataDirectory|\フォルダ名\test.mdf
のような感じで,わざわざ指定する必要があるようです。(たぶん)カレントディレクトリからの相当パスは,
カレントディレクトリを移動できてしまうので
いろんな意味で嫌ったのかもしれません。(単なる推測)
ユーザーインスタンスは,
権限を与えなくてもアタッチ可能にして
気軽にSQL Serverを利用できるようにする2005からの新機能で,
たぶん,ふつうは,
.mdfファイルは,権限を持っている人があらがしめアタッチしておいて,
AttachDbFilenameやUser Instanceは,使わずに,
Initial Catalog に そのユーザーのデフォルトの(論理)データベース名を指定します。