QA@IT

VS2013ExpressでSQLexpressのローカルシステムアカウントを設定できますでしょうか?

2973 PV

Wondows7 Professional SP1でVS2013Express(VisualBasic)を使っております。 

レジのジャーナル(記録)用に 月別でmdfファイルを作成したいと思い

雛形のmdfファイルをSQL server management studio 2012 で作成し

それをコピー、リネームして月別のmdfファイルにしたのですが

でアタッチしようとした場合

SQLExpressのプロパティを開き ログオンタブ  ローカルシステムアカウントを

設定しないと セキュリティが原因でエラーになります。

アプリ起動時に ローカルシステムアカウントの状態を保存でき

終了時に元に戻せるのが理想かと思いますが

VS2013Expressのコードでこれを設定できるでしょうか?

どうぞよろしくお願いいたします。

  • LocalDB、ユーザーインスタンス、既定のインスタンス(または名前つきインスタンス)のどれに接続しようとしているのですか? 前の 2 つのいずれかだとすると、いろいろ制約がある(運用環境における普通の使い方ではない)ということは承知の上ですか? -
  • いえ 存じませんでした 先ほど検索して理解いたしました。
    現状 sqlexpressに接続していますので ユーザーインスタンスになりますでしょうか。
    これを既定のインスタンス (MSSQLSERVER)に接続する場合 同様の問題が起こるのかを検証してみます。
    ありがとうございました。 
    -
  • SQL Server の Express 版をインストールすると、デフォルトでは名前つきインスタンスとなり、インスタンス名は SQLEXPRESS になりますが「現状 sqlexpressに接続」とはそれのことを言ってますか? -
  • はい。SQLExpressをインストールしています。インスタンスはサービスで確認しますとMSSQLSERVER,SQLEXPRESS,コンピューター名 の3つがあります。いままでは
    builder.DataSource = ".\SQLEXPRESS"
    として接続していました。   
    -
  • 質問者さんの環境・状況がよくわかりませんが、とにかく、LocalDB、ユーザーインスタンス、既定のインスタンス(または名前つきインスタンス)のいずれを使っているかは接続文字列でわかります。調べてみてください。 -
  • お手数をお掛けいたします。接続文字列を見ましたが
    既定のインスタンスに接続しているようです。
    見難くて申し訳ございませんが 以下のリンク先に 接続文字列がございます。
    http://blogs.yahoo.co.jp/b_kokyaku_boubi_roku



    -
  • 名前つきインスタンスに動的にアタッチして接続しているようですね。でも、普通は静的にアタッチされた DB に接続します。ユーザーが AttachDbFilename を接続文字列に指定してアタッチするケースは、自分が知る限りですが、ないです。通常複数のユーザーが同時に DB を利用するのですから。(ユーザーインスタンスや LocalDB の場合は話は別ですが) -
  • 名前付きインスタンスですが
    http://technet.microsoft.com/ja-jp/library/ms165614%28v=sql.90%29.aspx
    SQL Server Express では、常に既定で名前付きインスタンスが使用されます。
    と、ありました。動的静的は記述がありませんでした。
    ファイアウオールの設定がありますので静的がいいとは思います。
    -
  • AttachDbFilenameに関しましてはVS2013のデーターベースエクスプローラーでの接続で生成される接続文字列で見ることができます。
    http://blogs.yahoo.co.jp/b_kokyaku/63080564.html
    データソースを変えると接続できたりできなかったりするのが気になりました。
    -
  • エラー表示を元に検索しましたところ
    sqlexpressフォルダを削除しましたら
    ユーザーインスタンスの変更で接続が出来ました。
    http://blogs.yahoo.co.jp/b_kokyaku/63080822.html
    どうやら この不具合が原因で接続できなかったのかなと思いました。
    -
  • ユーザーインスタンスは今後無くなる機能として非推奨になっています。今後の開発には LocalDB を利用することが推奨されていますのでご注意ください。 -
  • 前にも書きましたが「複数のユーザーが同時に DB を利用する」のが普通の使い方です。なので、通常は LocalDB は実環境には使いません。開発完了後は接続文字列を変更して、リモートの DB サーバー内の SQL Server の既定のインスタンス(または名前つきインスタンス)に接続して使うのが普通です。 -
  • ただし、ユーザーが自分の PC 内でローカルにファイルベースで DB を使う(今回質問者さんのケースはこれに相当?)だけなのであれば、LocalDB の使用は選択肢に入るかもしれません。使う場合は、ライセンスを含む制約に注意してください。 -
  • SurferOnWww さんには 大変お世話になりました。
    開発環境と実環境の違い ライセンスなどの制約につきましては
    開発が進むと必ず問題になると思います。
    VS2013Expressでのスタンドアロンアプリの開発ではもしかしたらSQLCompactがいいのかもしれません。ありがとうございました。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。