22193
環境  
Visual Studio Express for Desktop  
SQL Server Express 2014  
C# Windows Form アプリケーション

にて開発を行っております。

VisualStudioでアプリケーションを実行した際は問題無くSQLServerに接続されるのですが  
ビルドしたexeを直接実行すると

```

    「このログインで要求されたデータベース "dbo" を開けません。ログインに失敗しました。
    ユーザー 'sa' はログインできませんでした。」
    
```

という例外が発生するようになりました。  
このような場合、まず何を疑えばよいのでしょうか。

接続文字列は以下になります。

```

    @"Server=.\SQLEXPRESS;"
                           + @"AttachDbFilename=|DataDirectory|\db.mdf;"
                           + "Database=dbo;"
                           + "integrated security=false;"
                           + "User ID=sa;"
                           + "Password=xxxx;";
    
```
CC BY-SA 3.0
2016-02-17T03:26:31.017
22192
2016-02-17T04:41:53.800
2016-02-17T03:56:50.190
10753
10753
question
c# visual-studio winforms sql-server
Windows Form アプリケーションでSQLServerへ接続できない
[SQL Server Express ユーザーインスタンス](https://msdn.microsoft.com/ja-
jp/library/ms254504\(v=vs.110\).aspx#Anchor_2)に

> `Integrated Security`が`true`に設定されます。ユーザーインスタンスに接続するにはWindows認証が必要です。SQL
> Serverログインはサポートされません。

とあるように`sa`でのログインは制限されているようです。

* * *

[管理者以外のユーザーのためのユーザーインスタンス](https://technet.microsoft.com/ja-
jp/library/ms143684\(v=sql.90\).aspx)で説明されていますが

> ユーザーインスタンスは、管理者以外のユーザーが各自のアカウントでSQL Serverのローカルバージョンを実行できるようにする機能です。

とあるように実行したユーザー権限で動作させる機能ですのでそもそもWindows認証が必須です。これはユーザーインスタンス登場当時からの制限であり途中から変更されたものではありません。
CC BY-SA 3.0
2016-02-17T04:07:54.267
22193
2016-02-17T04:41:53.800
2016-02-17T04:41:53.800
4236
4236
22192
answer