gpt4 book ai didi

c# - 无法使用 Windows 服务从 odbc 连接(使用 dsn)打开数据库?

转载 作者:太空狗 更新时间:2023-10-29 23:49:21 28 4
gpt4 key购买 nike

我正在创建 Windows 服务,它将使用 ODBC DSN 连接到数据库,而不使用任何用户名/密码。Windows 服务设置为 LocalService。 (我尝试将其更改为 Netwrok Service 以及 LocalSystem)我正在使用 ODBC DSN,因为我将拥有不同类型的数据库(Sqlite、Sql、MySQl 等)。此刻我遇到以下错误:

ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot open database "EmployeeDb" requested by the login. The login failed.
ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot open database "EmployeeDb" requested by the login. The login failed.
StackTrace: at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
at System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle)
at System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, OdbcConnectionString connectionOptions)
at System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.Odbc.OdbcConnection.Open()

这是我使用 dsn 名称连接 odbc 的代码

 var conn = new OdbcConnection(@"DSN=Employee");
conn.Open();
conn.Close();

最佳答案

not using any username/password. Windows service is set as LocalService.

如果您没有使用用户名/密码,那么您可能正在使用帐户身份进行身份验证,即 Windows 身份验证。为此,该服务需要在有权访问数据库的帐户中运行。 LocalServiceLocalSystem 永远不会工作:根据定义,这些帐户是本地的。 NetworkService可能工作,如果您已将机器帐户(用于机器的网络身份)添加到数据库具有该数据库权限的服务器;然而,这里通常的方法是告诉服务在特定域帐户中运行(作为服务帐户创建,具有“作为服务登录”权限),并确保该帐户是在数据库服务器上定义的,并且有权访问所请求的数据库。

调查:我假设可以访问数据库;所以暂时更改服务以运行,并查看它是否有效(假设您具有“作为服务登录”权限)。如果是这样,那肯定是问题所在 - 所以继续配置您希望它运行的实际帐户。

关于c# - 无法使用 Windows 服务从 odbc 连接(使用 dsn)打开数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49294955/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com