【发布时间】:2023-03-28 14:15:01
【问题描述】:
我正在尝试使用连接字符串通过 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 DB(代码有效)
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 身份、SqlConnectionString 连接选项、SqlCredential 凭证、对象 providerInfo、字符串 newPassword、SecureString newSecurePassword、布尔重定向用户实例、SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool 池,字符串 accessToken,布尔值 applyTransientFaultHandling) 在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions 选项,DbConnectionPoolKey poolKey,对象 poolGroupProviderInfo, DbConnectionPool 池,DbConnection owningConnection, DbConnectionOptions 用户选项)在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool 池,DbConnection owningObject,DbConnectionOptions 选项, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) 在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal 旧连接)在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal 旧连接)在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean 允许创建、布尔型仅OneCheckConnection、DbConnectionOptions userOptions,DbConnectionInternal& 连接)在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,TaskCompletionSource
1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource1 重试,DbConnectionOptions 用户选项、DbConnectionInternal oldConnection、DbConnectionInternal& 连接)在 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection 外部连接,DbConnectionFactory 连接工厂, 任务完成源1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1 重试)在 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 重试)在 System.Data.SqlClient.SqlConnection.Open() 在 DbConn.spCMSSelectTest(DataSet&ds) 在 c:\inetpub\wwwroot\CMS\App_Code\DbConn.cs:第 22 行 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
【问题讨论】:
-
连接时遇到什么错误?
-
这听起来不像是 sql 连接问题,听起来像 iis 问题
-
但你刚才说它没有错误....错误是什么
-
openConnection 是做什么的?我猜有些东西出错了 - 但你的代码没有报告它
-
好了,您尝试使用受信任的连接登录,但它在默认池中运行,而不是作为用户名...显然无权登录 sql - 您需要以“您”或“sql 用户”身份登录
标签: c# sql-server visual-studio connection-string