只读数据库连接字符串

Mad*_*ing 9 asp.net asp.net-mvc

这似乎是一个非常愚蠢的问题,但我有一个搜索,我找不到任何关于这个.

我有一个我在web.config中创建的数据库连接字符串: -

<connectionStrings>   
<add name="DBConn" connectionString="Data Source=<db svr>;Initial Catalog=<dbname>;Integrated Security=True" providerName="System.Data.SqlClient />   
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

要么

Data Source=<db svr>;Database=<db name>;User ID=<uname>;Password=<pword>;
Run Code Online (Sandbox Code Playgroud)

但我需要这个连接只读.我已经定义了所有我的linq对象只有获取它们的属性,并且我的(MVC)存储库类都没有.SubmitChanges()方法,所以我99%肯定系统无法更新这个数据库,但我如果可能的话,还想将我的数据库连接设置为RO.我意识到理想情况下这应该在SQL服务器端完成,用户应该成为RO,但是(由于各种原因,我无法控制)无法完成,所以我想锁定我的连接作为应用程序不得写入数据库.

是否有一个"readonly"参数我可以应用于连接字符串,以便在尝试进行任何更新时抛出错误或丢弃数据?

只是重申一下(我在第一个回答时,在另一个论坛上提出这个问题是"更改你的数据库凭据")我不能以任何方式更改数据库访问凭据,这些是RW和任何改变它们的尝试(当前)崩溃SQL Server数据库.这不是我的问题,我不能解决这个问题,所以这就是为什么我想看看DB连接RO,因为它绝对,积极地必须杀死每个......错误,我的意思是绝对的,积极的无法更改数据库数据.

干杯

MH

Kla*_*sen 7

不,没有办法(我知道).不幸的是,正确的方法是更改​​当前用户的授权,或创建仅具有select权限的新用户.我意识到这不是您正在寻找的答案,但是当您尝试更改其中的内容时,让Sql Server崩溃似乎是一个值得研究的问题.是因为您使用"sa"帐户连接?如果是这样,您应该创建另一个用户并向新用户授予适当的权限.


小智 6

您拥有的是访问代码(L2S)的类.我建议在部分类中覆盖datacontext的SubmitChanges,以便什么都不做(甚至抛出错误!)(或实现属于你的datacontext的所有可扩展性方法InsertObject,UpdateObject或DeleteObject)


Ode*_*ded 5

这实际上取决于您使用的数据库和数据库提供程序。有些允许对连接字符串的只读访问,有些则不允许。

例如:

SQL Server 2005 CE 在使用适用于 SQL Server Mobile 的 .NET Compact Framework 数据提供程序时,有一个可能的File Mode=Read Only;参数。(参见connectionstrings.com)。

SQL Server 2008没有

您可以在connectionstrings.com上查看更多信息。