集中和保护应用程序使用的连接字符串的最佳方法是什么?在我的环境中,我们有许多内部应用程序 每个应用程序都需要一个或多个连接字符串才能访问数据库.我们的目标是集中所有这些连接字符串(特别是SQL登录名和密码),这样我们就可以在一个地方而不是35个不同的.config文件,注册表项等中更改密码.
目前,我们正在使用一个本地增长的组件,它从访问数据库中提取连接字符串信息,这涵盖了集中化要求,但并不是特别安全.此外,我们还有使用经典asp,vb6,delphi,c ++ ,. net等语言编写的应用程序,因此所有这些应用程序都需要使用该解决方案.
有没有人知道如何更好地做到这一点,或者我们是否需要重新设计我们的应用程序访问数据库的方式.
我有三层设置.有人建议我应该从Web.Config文件中获取ConnectionString,我已经设置了这样:

现在我正在尝试从我的DAL层访问ConnectionString,但是我找不到ConfigurationManager.如何从这里调用我的连接字符串?:

今天我注意到,在我ConfigurationManager.ConnectionStrings的第一个实例中.\SQLEXPRESS.我记得明确地从我的web.config中删除了这个条目所以我再次检查,但没有找到任何东西.然后我搜索了整个解决方案,而不是单个匹配.
这个连接字符串来自何处以及如何删除它?
有没有办法在运行时显示连接字符串浏览(对于数据库)的连接属性对话框?
因为我希望用户能够使用GUI连接到各种数据库.与visual studio连接属性对话框中的相同.
提前致谢
我已经看到了这两个Option=3和Option=4连接字符串样品中的MySQL ODBC,但没有解释或文件.这些数字是什么意思?
如果我在web.config中有我的连接字符串(为了更好的可读性,添加换行符):
<add
name="conn"
connectionString="Data Source=(localdb)\v11.0; Initial
Catalog=MyDB; Integrated Security=True; MultipleActiveResultSets=True;
AttachDbFilename=D:\Products.mdf"
providerName="System.Data.SqlClient"/>
Run Code Online (Sandbox Code Playgroud)
连接有效,我可以连接到数据库资源管理器中的数据库.
当我在代码中指定connectionstring或使用ConfigurationManager来获取它时,它不起作用:
SqlCommand command = new SqlCommand();
command.CommandText = "select ...";
command.CommandType = CommandType.Text;
SqlConnection cn = new SqlConnection("Data Source=(localdb)\\v11.0;"+
"Initial Catalog=MyDB; Integrated Security=True; "+
"MultipleActiveResultSets=True; AttachDbFilename=D:\\Products.mdf");
command.Connection = cn;
cn.Open();
DataTable dataTable = new DataTable();
SqlDataReader reader;
reader = command.ExecuteReader();
dataTable.Load(reader);
cn.Close();
Run Code Online (Sandbox Code Playgroud)
从web.config获取连接字符串会产生相同的错误:
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings
["conn"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)
我得到的错误是"System.ComponentModel.Win32Exception:找不到网络路径"
在跟踪中说:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)]
我需要一些帮助来解决这个问题,一直试图解决这个问题几个小时,任何在线建议是我应该检查网络设置(不适用,因为它连接到sql server express的本地实例).服务器名称(相同的字符串在VS Express中有效,但在运行代码中不起作用).
这可能是身份验证问题吗?如果是这样,为什么没有信息的错误?
感谢您阅读我的帖子,希望您能帮助我.
更新:
我尝试过以下的事情:
鉴于该组每个人都对mdf和ldf文件拥有完全权限
在web下的项目属性中,我尝试在VS开发服务器和本地IIS …
我添加了别名"." 它应该指向我的本地(命名)实例,".\ SQL2008".但是当我尝试连接到"."时,它会超时.
我错过了什么或者这是不允许的?


我试过的别名不起作用:
(设置为32位和64位,我也尝试将端口留空.)

(1)我们使用Sql Server(Web Edition)在Azure Web站点上运行Web应用程序.该应用程序包括两个连接字符串
DefaultConnection - 正常连接字符串,格式为
Server=tcp:{my-sql-server}.database.windows.net,1433;Database=...).
EFConnection - 实体框架连接字符串.由于我使用EF设计师(并喜欢它),我需要使用形式的连接字符串metadata=res://*/Models.EDM...
(2)我把连接字符串放在web.config; 这是"元数据..."(EF)连接字符串被接受的唯一方式(当尝试在Azure网站的控制面板中输入这些连接字符串时,我遇到了各种奇怪的错误).
一切都很好.
(3)接下来,我在我们的网站上添加了一个临时插槽来执行分阶段开发,如Microsoft Azure网站上的分阶段部署中所述
分阶段的网站工作正常.我为它创建了一个不同的Sql Server,并以与生产站点相同的方式设置其连接字符串(即在web.config中).我处理不同的web.config使用web.config Transformations.(我有另外两个转换 - 用于开发/调试和本地部署/发布)
问题:现在我有一个生产+暂存网站,我尝试做交换.交换效果很好,引入站点的任何更改都会交换到生产中.
但是,交换还从登台站点获取连接字符串,将生产连接到登台数据库.
*这是一个已知的错误?有解决方法吗? (现在我需要在QA测试分阶段网站后直接部署到生产网站 - 这意味着我们网站的停机时间,并且安静地挫败了整个练习的目的)
TL; DR。
复制步骤,备份您的 C:\Program Files\Microsoft SQL Server\MSRS13.SSRS\Reporting Services\ReportServer\RsReportServer.config
运行以下命令以更新SSRS的配置中的连接字符串:
C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn>rsconfig -c -s <ServerName> -i <instanceNameIfNotDefault> -d "reportserver$ssrs" -a SQL -u sa -p "YourSAPassword" -t
Run Code Online (Sandbox Code Playgroud)
现在浏览到SSRS网站,它不起作用!要修复它,请还原您的配置文件或通过SSRS GUI工具运行,它可以正常工作!
RsConfig实用程序如何工作?
背景信息
在Windows 2016 Server上安装SSRS并还原2个数据库后,我需要更改SSRS配置文件中的连接字符串以指向新的SQL Server名称/实例。
问题
当我尝试C:\Program Files\Microsoft SQL Server\MSRS13.SSRS\Reporting Services\ReportServer\RsReportServer.config使用RSConfig实用程序更改文件中的加密连接字符串时:
C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn>rsconfig -c -s Server0012 -i SSRS -d "reportserver$ssrs" -a SQL -u sa -p "P@ssw0rd!" -t
Run Code Online (Sandbox Code Playgroud)
它更改RsReportServer.config中的Dsn连接字符串。
之前: <Dsn> AQAAANCMnd8BFdERjHoAwE / Cl + sBAAAAE + tJc / 4Vs0a0fdH0tCY8kgQAAAAiAAAAUgBlAHAAbwByAHQAaQBuAGcAIABTAGUAcgB2AGUAcgAAABBmAAAAAQAAIAAAAC2BBZF ... 0
之后: <Dsn> …
sql encryption powershell connection-string reporting-services
我有兴趣在Windows窗体应用程序中显示N个单选按钮列表,供用户选择目标数据库服务器.我想在app.config文件中添加SQL Server连接字符串,因此它们在运行时由应用程序读取,并在窗体中作为单选按钮呈现.
起初我想过使用分隔符来分隔连接
<appSettings>
<add key="ConnectionString" value="connection1|user id=user;password=123;server=10.0.0.1;database=myDatabase;connection timeout=30|connection2|user id=user;password=123;server=10.0.0.2;database=myDatabase;connection timeout=30"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
然后拆分键值对.
是否有可能以不同的方式做到这一点?
c# ×4
.net ×3
sql-server ×2
web-config ×2
alias ×1
app-config ×1
asp.net ×1
asp.net-mvc ×1
azure ×1
encryption ×1
mysql ×1
odbc ×1
powershell ×1
sql ×1
staging ×1
vb.net ×1