我正在用PHP编写一组数据库驱动的应用程序.这些应用程序将作为自己的用户在Linux服务器上运行.其他用户有时可能会在系统上,但具有非常可控的访问权限.他们根本无法访问的其他服务器.我还将向需要编写Perl脚本的开发人员公开一个限制存储过程API,这些脚本使用DBI和我编写的一组函数来访问数据库.
我的问题是保护包含连接字符串的配置文件的最佳方法是什么?
具有[4+] 00权限的不同用户是否足够?我应该加密它们吗?这似乎只是将问题转移到其他地方,以便我担心存储加密密钥的位置.我意识到Perl开发人员需要拥有自己的连接字符串,因为它们只具有执行数据库权限.
我正在使用EF 4.1,我创建了一个普通的EF edmx文件.我是从DB生成的.
当它生成时,我右键单击并选择添加代码生成项,生成新类,然后使用DbContext.我使用模板DbContext生成器.
一切正常.
然后我trie查询上下文:
using (var context = new PasDBEntities())
{
var client=context.ClientCompanies.SingleOrDefault(_=>_.ID==clientCompanyId);
if(client!=null)
Run Code Online (Sandbox Code Playgroud)
我在创建上下文的新实例时没有问题但是当我尝试查询它时会出现问题.我陷入了UnintentionalCodeFirstException.并得到错误:
{"如果在Code First模式下使用,则使用T4模板为Database First和Model First开发生成的代码可能无法正常工作.要继续使用Database First或Model First,请确保在执行应用程序的配置文件中指定了Entity Framework连接字符串要使用从Database First或Model First生成的这些类,使用Code First添加任何其他配置,使用属性或DbModelBuilder API,然后删除引发此异常的代码."}
我不想先使用代码,但我不知道是否可以"关闭"它,或者问题出在哪里.
供参考,这是我的构造函数......
public partial class PasDBEntities : DbContext
{
public PasDBEntities()
: base("PasDBEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
Run Code Online (Sandbox Code Playgroud)
...和连接字符串:
<connectionStrings>
<add name="PasDBEntities"
connectionString="metadata=res://*/PasDB.csdl|
res://*/PasDB.ssdl|
res://*/PasDB.msl;
provider=System.Data.SqlClient;
provider connection string="
data source=localhost;
initial catalog=PasDB;
integrated security=True;
pooling=False;
multipleactiveresultsets=True;
App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud) entity-framework connection-string entity-framework-4.1 database-first
我正在开发的系统遇到一些麻烦.就这个问题而言,布局是一个WiX内置的msi安装程序,它安装SQL LocalDB 2012,WPF应用程序和Windows服务.Windows服务和WPF应用程序都要与同一个数据库进行通信,应用程序由用户交互驱动,计算机上的服务也是如此.
一切都安装得很干净,数据库实例以混合模式安装,因此我的数据库初始化程序为实例和数据库创建了一个新的登录和用户,而在SSMS中,它们似乎都正确配置.我可以使用新的登录信息登录并查询表格.这是我用来创建登录的代码:
IF NOT EXISTS
(SELECT loginname
FROM master.dbo.syslogins WHERE name = 'BP_SERVICELOGIN')
BEGIN
CREATE LOGIN[BP_SERVICELOGIN] WITH PASSWORD = 'pw';
CREATE USER[bpUser] FOR LOGIN[BP_SERVICELOGIN] WITH DEFAULT_SCHEMA = dbo;
USE DatabaseName;
EXEC sp_addrolemember 'db_owner', 'bpUser'
END
Run Code Online (Sandbox Code Playgroud)
所以我重申一下; 此登录在SSMS中工作得很好,并允许我登录并访问由WPF应用程序的初始化程序创建的数据库.
但是,我无法从Windows服务登录此数据库.我确保在我的连接字符串中使用新登录,并在那里正确设置了所有内容.我怎么知道这个?因为当我将连接字符串复制到我的WPF应用程序并使用它而不是Windows身份验证时,它可以工作!?!
该服务不断失败并显示以下消息:
"System.Data.Entity.Core.EntityException: The underlying provider failed on Open. in EntityFramework:File: Method:Open Line:0 Column:0 System.Data.SqlClient.SqlException: Login failed for user 'BP_SERVICELOGIN'. in .Net SqlClient Data"
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的连接字符串:
<add name="ConnStringName" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=DbName;User Id=BP_SERVICELOGIN;Password=pw;MultipleActiveResultSets=True;Application Name=ServiceName" />
Run Code Online (Sandbox Code Playgroud)
似乎存在一些障碍,即保持与Windows服务的连接正确连接,而其他人没有这样的问题.LocalDB安装是新鲜的,除了DB和创建的Login/User之外,没有从OOB状态对它进行任何操作.
有人可以帮忙吗?
.net sql-server connection-string windows-services database-connection
谁能告诉我以下连接字符串之间的有效区别:
<add key="ConnectionString" value="server=tcp:192.168.0.12\Sqlserver2005;database=;user id=sa;password=;">
<add key="ConnectionString" value="server=192.168.0.12\Sqlserver2005;database=;user id=sa;password=;Network Library=DBMSSOCN;">
Run Code Online (Sandbox Code Playgroud)
我相信两者都是一样的.指定"网络库= DBMSSOCN"使用TCPIP显式连接,并且前缀服务器值与TCP做同样的事情.
请告诉我在web.config中指定这些设置是否存在任何差异或性能影响.
我正在尝试使用C#/ ASP.NET以编程方式连接到我的Sqlite数据库:
string requete_sql = "SELECT * FROM USERS";
connStr = @"Data Source=C:\LocalFolder\FooBar.db;";
using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(connStr)) {
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(requete_sql,conn);
conn.Open();
cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
但是异常上升(在conn.Open()行上)告诉:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为我复制了Web.config文件中找到的确切连接字符串. …
如果我在web.config文件中定义了连接字符串,如何从C#代码创建与SQL db的连接(抱歉忘记指定),然后调用存储过程.然后我想最终以某种方式使用这些数据作为GridView的DataSource.
以下是在web.config中定义连接字符串的方法:
<connectionStrings>
<add name="db.Name" connectionString="Data Source=db;Initial Catalog=dbCat;User ID=userId;Password=userPass;" providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
数据库服务器是Microsoft SQL服务器.
这是我在寻找的东西:
ConnectionStringSettings conSet = ConfigurationManager.ConnectionStrings["db.Name"];
SqlConnection con = new SqlConnection(conSet.ConnectionString);
Run Code Online (Sandbox Code Playgroud)
获取数据的代码相当简单.我更感兴趣的是从web.config文件中的connectionString变量访问它.
sql-server asp.net stored-procedures connection-string web-config
连接字符串中APP属性和Application Name属性之间的区别是什么?一个人只是别人的别名吗?我似乎无法找到任何有关它的文件.
另外,我可以在空格中放置空格Application Name吗?例如Application Name=foo bar;
得到错误:
System.Data.ProviderIncompatibleException:从数据库获取提供程序信息时发生错误.这可能是由实体框架使用不正确的连接字符串引起的.
检查内部异常以获取详细信息,并确保连接字符串正确.
---> System.Data.ProviderIncompatibleException:提供程序未返回ProviderManifestToken字符串.
---> System.Data.SqlClient.SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:SQL网络接口,错误:25 - 连接字符串无效)
尝试做的时候我得到了同样的错误 Add-Migration
这是我的连接字符串,我需要访问我的本地SQL服务器而不是SQLEXPRESS.
<connectionStrings>
<add name="ReaderInsightDbContext"
connectionString="data source=localhost\MSSQLSERVER;
initial catalog=ReaderInsight;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
我的DB位于:
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
Run Code Online (Sandbox Code Playgroud)
所以我的实例是MSSQLSERVER.不确定发生了什么.它首先工作正常,但在我改变我的代码以使用UOW模式后,这种情况正在发生.我还从EF 4.3升级到EF5.同样的问题.
我尝试了连接字符串中的数据源的许多变体,没有工作,这里有一些例子:
如果我这样做.\ SQLEXPRESS它的工作原理.
我可以通过终端连接到DB,但是使用mongoose和gulp来获取此错误.mongoose/node_modules/mongodb/lib/mongodb/connection/base.js:246 MongoError:auth failed
我的连接字符串是:
mongodb://usr:psw@localhost:27017/dbname
Run Code Online (Sandbox Code Playgroud)
知道它可以是什么吗?
我正在使用flask migrateflask-sqlalchemy进行数据库创建和迁移.
一切都工作正常,直到我更改我的数据库用户密码包含'@'然后它停止工作所以,我更新了我的代码基于 写密码包含特殊字符时的连接字符串
它适用于应用但不适用于烧瓶迁移,它在迁移时显示错误
即 python manage.py db migrate
ValueError: invalid interpolation syntax in u'mysql://user:p%40ssword@localhost/testdb' at position 15
Run Code Online (Sandbox Code Playgroud)
密码在这里被p@ssword转义urlquote(见上面的问题链接).
完整错误堆栈:
Traceback (most recent call last):
File "manage.py", line 20, in <module>
manager.run()
File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 412, in run
result = self.handle(sys.argv[0], sys.argv[1:])
File "/usr/local/lib/python2.7/dist-packages/flask_script/__init__.py", line 383, in handle
res = handle(*args, **config)
File "/usr/local/lib/python2.7/dist-packages/flask_script/commands.py", line 216, in __call__
return self.run(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask_migrate/__init__.py", line 177, in migrate
version_path=version_path, rev_id=rev_id)
File "/usr/local/lib/python2.7/dist-packages/alembic/command.py", line 117, …Run Code Online (Sandbox Code Playgroud) python mysql connection-string flask-sqlalchemy flask-migrate
.net ×2
asp.net ×2
sql-server ×2
c# ×1
database ×1
linux ×1
mongodb ×1
mongoose ×1
mysql ×1
performance ×1
php ×1
python ×1
security ×1
sqlite ×1
web-config ×1