我正在尝试使用连接字符串通过Visual Studio 15连接到本地Sql Server 2012数据库实例 . 虽然我已经能够通过Visual Studio SQL Server对象资源管理器连接到数据库并成功运行测试程序,但我无法在使用连接字符串的项目中执行此操作 .
这是我的连接字符串,由SQL Server对象资源管理器提供
<connectionStrings>
<add name="objConnLocal"
connectionString="Data Source=DESKTOPIVO;Integrated Security=True;Initial Catalog=tnk;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False;"providerName="System.Data.SqlClient"/>
</connectionStrings>
这是我的代码完美地连接到Azure数据库与Azure给定的连接字符串(代码工作)
public class DbConn
{
public static string DatabaseConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["objConnLocal"].ConnectionString;
public static SqlConnection objConn = new sqlConnection(DatabaseConnectionString);
public void spCMSSelectTest(out DataSet ds)
{
ds = new DataSet("buttons");
SqlDataAdapter objDataAdapter = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand("spCMSSelectTest", DbConn.objConn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection.Open();
objDataAdapter.SelectCommand = cmd;
objDataAdapter.Fill(ds);
cmd.Connection.Close();
}
}
这是我正在尝试连接的数据库:
这是我试图访问的测试页面:
protected void Page_Load(object sender, EventArgs e)
{
DataSet ds;
try
{
dbc.spCMSSelectTest(out ds);
lblTest.Text = ds.Tables[0].Rows.Count.ToString();
}
catch (Exception easd)
{
lblTest.Text = easd.ToString();
}
}
我一直在这里和谷歌的答案,但似乎没有什么对我有用 . 我错过了什么?
编辑:有错误:
System.Data.SqlClient.SqlException(0x80131904):用户'IIS APPPOOL \ DefaultAppPool'登录失败 . at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity,SqlConnectionString connectionOptions,SqlCredential credential,Object providerInfo,String newPassword,SecureString newSecurePassword,Boolean redirectedUserInstance,SqlConnectionString userConnectionOptions,SessionData reconnectSessionData,DbConnectionPool pool,String accessToken,Boolean applyTransientFaultHandling)at System .Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions选项,DbConnectionPoolKey poolKey,对象poolGroupProviderInfo,池类DBConnectionPool,的DbConnection owningConnection,DbConnectionOptions USEROPTIONS)在System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(池类DBConnectionPool,的DbConnection owningObject,DbConnectionOptions选项,DbConnectionPoolKey poolKey, System.Data.ProviderBase.DbConnectionPool.CreateObject上的DbConnectionOptions(userOptions)(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionIn) System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection)处于System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout,Boolean allowCreate,Boolean onlyOneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal&)中的ternal oldConnection)连接)在System.Data.ProviderBase.DbConnectionPool.TryGetConnection(的DbConnection owningObject,TaskCompletionSource1重试,DbConnectionOptions USEROPTIONS,在System.Data.ProviderBase.DbConnectionFactory.TryGetConnection DbConnectionInternal&连接)(的DbConnection owningConnection,TaskCompletionSource1重试,DbConnectionOptions USEROPTIONS,DbConnectionInternal oldConnection,DbConnectionInternal&连接)在System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection,DbConnectionFactory connectionFactory,TaskCompletionS)在DbConn的System.Data.SqlClient.SqlConnection.Open()处的System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1重试)的System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1 retry)处的ource1重试,DbConnectionOptions userOptions) c:\ inetpub \ wwwroot \ CMS \ App_Code \ DbConn.cs中的.spCMSSelectTest(DataSet&ds):位于c:\ inetpub \ wwwroot \ CMS \ index2.aspx.cs中index.Page_Load(Object sender,EventArgs e)的第22行:第18行ClientConnectionId:d576fae4-db3d-451d-8436-2abe003c01f0错误号码:18456,州:1,类:14
2 回答
您以受信任的用户身份登录(默认) - 该用户是您需要以您身份登录的池用户IIS APPPOOL \ DefaultAppPool,或SQL登录 . 因为它在池下运行时不使用相同的凭据,因为它来自您的桌面 .
你错过了数据库 .
将
Initial Catalog=tnk
添加到您的连接字符串 .