我正在尝试使用 Python 建立 jTDS 连接。谁能帮我完成这个任务吗?
在 SQL Server 中,我通常使用以下连接字符串进行连接:
jdbc:jtds:sqlserver://DBServer:port/DBInstance;useNTLMv2=true;domain=Domain
Run Code Online (Sandbox Code Playgroud)
我正在尝试在 Python 中执行以下操作:
import pyodbc
conn = pyodbc.connect('Driver={SQL Server};'
'Server=DBName,port;'
'Database=database;'
'Truster_Connection=yes;'
'uid=user;'
'pwd=password;'
)
cursor = conn.cursor()
cursor.execute('SELECT * from Table')
for row in cursor:
print(row)
Run Code Online (Sandbox Code Playgroud)
错误:
pyodbc.InterfaceError: ('28000', "[28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'USER'. (18456) (SQLDriverConnect); [28000] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute (0); [28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'USER'. (18456); [28000] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute …Run Code Online (Sandbox Code Playgroud) 我一开始打开一个数据库,然后需要根据用户选择两个值打开另一个数据库。数据库选择必须在运行时进行,并且每次都会改变。
尝试使用连接字符串类访问连接字符串,并尝试了其他选项,例如我不理解的单例。我在运行 SQL Server Express 的本地 Windows 10 系统上运行此程序。使用 Asp.Net Core 2.1 进行编码
> ASP.Net Core v2.1
Run Code Online (Sandbox Code Playgroud)
构建多租户、多年应用程序 每个客户每年都会有一个 SQL 数据库
我希望有一个具有以下结构的表
COMPANY_CODE VARCHAR(3),
COMPANY_YEAR INT,
COMPANY_DBNAME VARCHAR(5)
Run Code Online (Sandbox Code Playgroud)
样本数据
COMPANY_CODE: AAD
COMPANY_YEAR: 19
COMPANY_DB: AAD19
COMPANY_CODE: AAD
COMPANY_YEAR: 18
COMPANY_DB: AAD18
COMPANY_CODE: AAD
COMPANY_YEAR: 17
COMPANY_DB: AAD17
Run Code Online (Sandbox Code Playgroud)
因此,每家公司都会有多行 - 每个财政年度一行。
COMPANY_DB 列将存储要为该会话打开的数据库名称。
用户通过身份验证后,我想更改连接字符串以指向所选行的 COMPANY_DB 列中的数据库,然后让登录的用户执行事务。
我无法弄清楚如何更改startup.cs中嵌入的连接字符串。
任何有关如何实现这一目标的提示将不胜感激。
我有一个 .net core 3.1 Console 项目。我正在尝试将其设置为使用 NLog。我使用 2 个目标,数据库和文件。我可以写入文件,但不能写入数据库。我确信连接字符串是正确的,因为我在其他项目中使用它,但它们是在 4.7 框架中编写的。
这是我的 app.config 设置:
<connectionStrings>
<add name="NLog" connectionString="Data Source=mySource;Initial Catalog=MyLogging;Integrated Security=SSPI;" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
这是我尝试在目标中设置它:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
internalLogLevel="Info"
internalLogFile="c:\temp\nlog-internal.log">
<!-- enable asp.net core layout renderers -->
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
</extensions>
<!-- the targets to write to -->
<targets>
<target name="database" xsi:type="Database" connectionString="${configsetting:name=NLog}" commandType="StoredProcedure" commandText="[dbo].[MyLogEntry]">
</target>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="Database" />
</rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)
来自 c:\temp\nlog-internal.log 的错误消息是:
2021-02-10 16:11:48.3381 Error DatabaseTarget(Name=database): Error when writing to …Run Code Online (Sandbox Code Playgroud) connection-string app-config nlog asp.net-core-configuration asp.net-core-3.1
我有一个具有 DDD 架构的 Azure Function。我的项目结构如下所示:
local.settings.json文件看起来像这样:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"ServiceBusConnectionString": "Endpoint=sb://sb.servicebus.windows.net/;*****"
},
"ConnectionStrings": {
"DefaultConnection": "Server=tcp:*************"
}
}
Run Code Online (Sandbox Code Playgroud)
我的appsettings.json看起来像这样:
{
"ConnectionStrings": {
"DefaultConnection": "*******"
}
}
Run Code Online (Sandbox Code Playgroud)
文件ApplicationDbContextFactory如下所示:
public class ApplicationDbContextFactory : IDesignTimeDbContextFactory<ApplicationDbContext>
{
public ApplicationDbContext CreateDbContext(string[] args)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>();
optionsBuilder.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
return new ApplicationDbContext(optionsBuilder.Options);
}
}
Run Code Online (Sandbox Code Playgroud) 我需要知道应用程序设置(连接字符串)的存储位置和方式,以便在运行时更改它们并保存.
我知道在VS中你可以配置项目>属性下的设置,这些设置存储在apps安装目录下的appname.exe.config文件中.但是"应用程序范围"在运行时不能读/写,如果你改变那些在用户范围下,配置文件的副本在用户目录下创建,并且不会被应用程序的其他用户访问.
我需要有一种方法,以便用户可以根据应用程序内部的需要配置存储在公共配置文件中的连接字符串,然后让所有其他用户(在该计算机上)也可以使用它.我该怎么做到这一点?
将连接字符串与密码放在app.config文件中真的很好吗?
在我看来,app.config没有以任何方式加密,并且可以轻松读取密码信息.
我有一个应用程序访问数据库,目标最终用户没有身份验证.使用组用户/密码.仅当当前Windows用户位于Active Directory组中时,才会启动该应用程序.因此,一旦进入应用程序,用户就可以使用组用户连接到数据库.
处理此类连接字符串的正确方法是什么?在源代码中隐藏它们?
注意这是一个独立的应用程序 - 而不是ASP,IIS等
这对我有用
(感谢Jon Galloway - http://weblogs.asp.net/jgalloway/archive/2008/04/13/encrypting-passwords-in-a-net-app-config-file.aspx)
private void EncryptConfigSection()
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConfigurationSection section = config.AppSettings;
if (section != null)
{
if (!section.SectionInformation.IsProtected)
{
if (!section.ElementInformation.IsLocked)
{
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
section.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这通过在应用程序第一次运行时加密exe配置文件来实现.我没有找到一种方法在安装过程中执行此操作,因此配置文件完全可读,直到第一次启动应用程序.也许有人有个主意......
每当我尝试在我的C#代码中运行任何东西时,我都会收到以下错误:
System.InvalidOperationException was unhandled by user code
Message=No connection string configured
Run Code Online (Sandbox Code Playgroud)
它发生在以下代码中.
if (System.Configuration.ConfigurationManager.ConnectionStrings["DBContext"] == null)
{
throw new System.InvalidOperationException("No connection string configured");
}
connectionString = string.Format("{0};Application Name={1}", System.Configuration.ConfigurationManager.ConnectionStrings["DBContext"].ConnectionString, this.applicationName);
Run Code Online (Sandbox Code Playgroud)
所以System.Configuration.ConfigurationManager.ConnectionStrings["DBContext"]是null.我真的找不到任何关于它的东西,一个可能相关的问题:如何修复"ConnectionString属性尚未初始化"表明配置文件可能有问题.此刻我恐怕不知何故意外删除了一个配置文件.
另外,请在文档中阅读:
Returns a ConnectionStringSettingsCollection object that contains the contents of the ConnectionStringsSection object for the current application's default configuration.
Run Code Online (Sandbox Code Playgroud)
它包含默认值,所以我倾向于在配置文件中,我必须意外删除.
如果我是对的,我不知道它应该是哪一个,应该包含哪些内容.如果我错了,我不知道它来自哪里.那么System.Configuration.ConfigurationManager.ConnectionStrings ["DBContext"]在哪里设置?和/或我该如何解决这个问题?
我见过很多人在web.config文件中保留连接字符串,而不是硬编码.但我发现它非常危险,特别是在所有用户使用相同连接字符串的情况下.这意味着任何有权访问Web配置文件的人都可以轻松获取数据库的用户名和密码,并执行各种严肃的操作.是否能够修改连接字符串而无需深入研究代码值得折衷?在配置文件中保留连接字符串有什么其他好处吗?
我有一个包含登录名,数据库和密码的字符串.
string str = "user Id=abc, database=DDD, Password=mypasswd"
Run Code Online (Sandbox Code Playgroud)
我希望能够用不同的值替换数据库值"DDD".
我尝试使用string.Replace,但我不知道现有的数据库是什么.
有谁知道一个简单的解决方案?
我试图在.net框架4的Windows Server 2003上将我的网站连接到我的sql server 2008 r2
这是连接字符串:
<add name="TestDbConnectionString"
connectionString="Data Source=(local);Initial Catalog=RESv5;integrated security=SSPI;"
providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
我有一个例外,那就是:
用户'NT AUTHORITY\NETWORK SERVICE'登录失败.
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.异常详细信息:System.Data.SqlClient.SqlException:用户'NT AUTHORITY\NETWORK SERVICE'登录失败.
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
我看到这个问题用户'NT AUTHORITY\NETWORK SERVICE'登录失败了,我试图让用户命名为NT AUTHORITY\NETWORK SERVICE但我仍然有问题,
我已经尝试使用用户名和密码.这是连接字符串
<add name="TestDbConnectionString"
connectionString="Data Source=(local);Initial Catalog=RESv5;integrated security=SSPI;User Id=sa;Password=myPassword;"
providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
但仍然有问题
c# ×3
.net ×2
app-config ×2
appsettings ×2
asp.net ×2
sql-server ×2
asp.net-core ×1
default ×1
jtds ×1
nlog ×1
python-3.x ×1
string ×1
web-config ×1