0

動作する接続文字列があります-ここにあります:

<add name="MyEntities"
  providerName="System.Data.EntityClient"
  connectionString="metadata=
  res://*/;
  provider=System.Data.SqlClient;
  provider connection string='
  Data Source=localhost;
  Initial Catalog=MyDb;
  Integrated Security=False;
  User Id=MyDbUser;
  Password=123456;
  MultipleActiveResultSets=True'" />

私は次のようにユーザーを設定しました:

USE [master]
GO
IF EXISTS(SELECT * FROM sys.syslogins WHERE name = N'MyDbUser')
    DROP LOGIN [MyDbUser];
GO
CREATE LOGIN [MyDbUser]
    WITH
        PASSWORD=N'123456',
        DEFAULT_DATABASE=[MyDb],
        CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
-- Drop & recreate db-user
USE [MyDb]
GO
IF  EXISTS (SELECT * FROM sys.database_principals WHERE name = N'MyDbUser')
    DROP USER [MyDbUser];
GO
CREATE USER [MyDbUser] FOR LOGIN [MyDbUser]
GO
EXEC sp_addrolemember N'db_owner', N'MyDbUser'
GO

SSPI セキュリティを使用するように接続文字列を変更すると、機能しなくなります。SQL初心者として、他にどのような変更を加える必要があるかについて誰かアドバイスをいただければ幸いです。

前もって感謝します。

4

2 に答える 2

0

SQL Server ユーザーではなく、Windows ユーザーである必要があります。MSDN を参照してください:

"統合セキュリティ - false の場合、ユーザー ID とパスワードが接続で指定されます。true の場合、現在の Windows アカウント資格情報が認証に使用されます。認識される値は、true、false、yes、no、および sspi (強く推奨) です。 true に相当します。」

于 2013-03-28T19:08:23.063 に答える
0

やってみました?

<add name="MyEntities"
    providerName="System.Data.EntityClient"
    connectionString="metadata=
    res://*/;
    provider=System.Data.SqlClient;
    provider connection string='
    Data Source=localhost;
    Initial Catalog=MyDb;
    Integrated Security=True;
    MultipleActiveResultSets=True'" 
/>

次のようなユーザーを作成します。

CREATE LOGIN [MYDOMAIN\MyUser]
FROM WINDOWS;

次に、データベースに接続するプロセスが Windows で [MYDOMAIN\MyUser] として実行されていることを確認する必要があります。

それができない場合は、SQL Server での SSPI 接続の問題をトラブルシューティングする方法に関するすばらしいブログ エントリがhttp://www.allenkinsel.com/archive/2010/06/sql-server-and-sspi-handshake-failed-error-地獄/

于 2013-03-28T19:03:50.997 に答える