2017-07-12 7 views
1

私は特定のサービスアカウントでWindows上で実行する必要があるアプリケーションを持っています。 .NETアプリケーションは、MSSQLデータベースに、私は私が私の通常のドメインアカウントでSSMSを実行した場合、私はSQLのユーザtestuserをを使用することができます SQL Server認証は、異なるサービスアカウントで異なる動作をします

すなわち

<add name="conn" connectionString="Data Source=(localdb)\MSSQLLocalDB;initial catalog=MyDB;User Id=testuser;Password=xxx" providerName="System.Data.SqlClient" /> 
、使用するSQLサーバー認証を指定した接続文字列で接続されています'をクリックしてデータベースに接続します。ただし、アプリケーションを実行するサービスアカウントでSSMSを実行すると、「ログインに失敗しました」というメッセージが表示されます。 (サービスを実行しているときも同様です)。

私はこの問題を調べるのに1日以上を費やしています。だから誰かが何か間違っているかもしれないアイデアがあれば、私は非常に感謝します。

更新: SQLサーバーログにエラーメッセージが

07/12/2017 12:18:32,Logon,Unknown,Login failed for user 'testuser'. Reason: 
Could not find a login matching the name provided. [CLIENT: <named pipe>] 
07/12/2017 12:18:32,Logon,Unknown,Error: 18456<c/> Severity: 14<c/> State: 5. 

あるしかし、私は自分のドメインアカウントを使用して、SSMSにログオンしている場合、「TESTUSERは、」セキュリティの下に表示される - >ログイン。サービスが正常に System.Data.SqlClient.SqlException(0x80131904)を開始しませんでした

私はサービスを開始しようとすると、発生したSQL例外は、次のとおりです。ログインユーザtestuserという "に失敗しました。 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity同一性、SqlConnectionString connectionOptions、SqlCredential資格、providerInfo、文字列NEWPASSWORD、SecureString newSecurePassword、ブールredirectedUserInstance、SqlConnectionString userConnectionOptions、SessionDataにreconnectSessionData、DbConnectionPoolプール、文字列accessToken、ブールapplyTransientFaultHandlingオブジェクト) でそれはかなり長かったのでSystem.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptionsオプション、DbConnectionPoolKey poolKeyは、poolGroupProviderInfo、DbConnectionPoolプール、たDbConnection owningConnection、DbConnectionOptions userOptionsオブジェクト)

で私は、スタックトレースの一部を省略しました。

+0

質問をログ出力で更新しました。御時間ありがとうございます! – SabrinaMH

+1

'(localdb)'は特定のユーザにとってローカルです。 'sqllocaldb share'(コマンドラインから)を使って、複数のユーザー間で利用可能なインスタンスを公開してください。 –

+0

これは非常に意味があります!私は、コマンド _sqllocaldbシェア "MSSQLLocalDB" "SharedLocalDB" _ _ が生じ をinfo_ _sqllocaldb が続く。\ SharedLocalDB、 MSSQLLocalDB、 ProjectsV13_私は _(localdb)\ SharedLocalDB_ に指定した場合、今 を走りました接続文字列が "SQLサーバーへの接続を確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからなかったか、アクセスできませんでした"というエラーが表示されます。 – SabrinaMH

答えて

2

(localdb)は、特定のユーザーに対してローカルです。ユーザー間で利用可能であるインスタンス公開する(昇格したコマンドプロンプトから)sqllocaldb share使用します

sqllocaldb share MSSQLLocalDB SharedLocalDB 

インスタンスが実行されている場合は、それが共有インスタンスが使用可能になる前に再起動する必要があります

sqllocaldb stop MSSQLLocalDB 
sqllocaldb start MSSQLLocalDB 

これで、共有インスタンスに(localdb)\.\SharedLocalDB.\を気にしてください)という名前で接続できます。

LocalDBの意図した使用は、SQL Serverを管理することなく、単独でテストしていることに注意してください(実際、管理するオプションはほとんどありません)。継続的に使用できるデータベースインスタンスが必要な場合は、SQL Server Expressインスタンスのインストールをお勧めします。

関連する問題