我正在尝试使用连接字符串通过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'。在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity,SqlConnectionString connectionOptions,SqlCredential 凭证,Object providerInfo,String newPassword,SecureString newSecurePassword,Boolean redirectedUserInstance,SqlConnectionString userConnectionOptions,SessionData reconnectSessionData, DbConnectionPool池,String accessToken,Boolean applyTransientFaultHandling)at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options,DbConnectionPoolKey poolKey,Object poolGroupProviderInfo, DbConnectionPool池,DbConnection owningConnection, DbConnectionOptions userOptions)at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(类DBConnectionPool pool,DbConnection owningObject,DbConnectionOptions选项, DbConnectionPoolKey poolKey,DbConnectionOptions userOptions)at System.Data.ProviderBase.DbConnectionPool.CreateObject(的DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection) 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&amp;连接) System.Data.ProviderBase.DbConnectionPool.TryGetConnection(的DbConnection owningObject,TaskCompletionSource
1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource
1重试,DbConnectionOptions userOptions,DbConnectionInternal oldConnection,DbConnectionInternal&amp; 连接) System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(的DbConnection outerConnection,DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource
1 重试) System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 重试)在System.Data.SqlClient.SqlConnection.Open()处 DbConn.spCMSSelectTest(DataSet&amp; ds)in c:\ inetpub \ wwwroot \ CMS \ App_Code \ DbConn.cs:第22行at index.Page_Load(Object sender,EventArgs e)in c:\ inetpub \ wwwroot \ CMS \ index2.aspx.cs:第18行 ClientConnectionId:d576fae4-db3d-451d-8436-2abe003c01f0错误 号码:18456,状态:1,类别:14
答案 0 :(得分:3)
您以受信任的用户身份登录(默认) - 该用户是您需要以您身份登录的池用户IIS APPPOOL \ DefaultAppPool,或SQL登录。因为它在池下运行时不使用相同的凭据,因为它来自您的桌面。
答案 1 :(得分:1)
您错过了数据库。
将Initial Catalog=tnk
添加到您的连接字符串。