Это походит на действительно глупый вопрос, но у меня был поиск вокруг, и я ничего не могу найти об этом.
У меня есть строка соединения с БД, которую я создаю в своем web.config:-
<connectionStrings>
<add name="DBConn" connectionString="Data Source=<db svr>;Initial Catalog=<dbname>;Integrated Security=True" providerName="System.Data.SqlClient />
</connectionStrings>
или
Data Source=<db svr>;Database=<db name>;User ID=<uname>;Password=<pword>;
но мне нужно это соединение, чтобы быть только для чтения. Я определил все свои объекты linq с, только входит в их свойства, и ни один из моих классов репозитория (MVC) не имеет.SubmitChanges () методы в них так, я на 99% уверен, что система не может обновить этот DB, но я также хотел бы установить свое соединение с БД, чтобы быть RO если вообще возможный. Я понимаю, что идеально это должно быть сделано в конце SQL-сервера, и пользователь должен быть сделан RO, но который (по различным причинам, из моего управления) не может быть сделан, таким образом, я хотел заблокировать вниз свое соединение, поскольку приложение не должно писать в DB.
Существует ли параметр "только для чтения", я могу обратиться к строке подключения так, чтобы это бросило бы ошибку или отбросило бы данные, если бы какие-либо обновления были предприняты?
Только для повторения (1-й ответ я имел, при выяснении у этого, на другом форуме, было "изменением учетные данные DB"), я не могу, всегда, изменить учетные данные доступа DB, это RW, и любая попытка изменить их (в настоящее время) разрушает DB SQL-сервера. Это не моя проблема, и я не могу посмотреть на решение того вопроса, так же вот почему я хочу посмотреть на создание соединения с БД RO как это абсолютно, положительно должен уничтожить каждый.... errr, я имею в виду абсолютно, положительно не может изменить данные DB.
Аплодисменты
MH
Под вашим контролем находятся классы доступа к коду (L2S). Я предлагаю переопределить в частичном классе SubmitChanges для вашего текста данных, чтобы ничего не делать ( или даже бросить ошибку!) (или реализовать все методы расширяемости InsertObject, UpdateObject или DeleteObject, которые принадлежат вашему тексту данных)
.Нет, нет способа (о котором я знаю). К сожалению для вас, правильным способом сделать это было бы изменить разрешения текущего пользователя или создать нового пользователя только с привилегиями выбора. Я понимаю, что это не тот ответ, который вы ищете, но наличие Sql Server, который терпит крах, когда вы пытаетесь изменить вещи в нем, кажется проблемой, которая действительно стоит рассмотреть. Вы используете учетную запись «sa» для подключения? Если это так, необходимо создать другого пользователя и предоставить ему соответствующие разрешения.
-121--3294891- Рекомендуется использовать cellspacing
и cellpadding
для атрибутов table
тэгов или border-spacing
css.
Это действительно зависит от используемой базы данных и поставщика БД. Некоторые разрешают доступ только для чтения в последовательности подключения, некоторые - нет.
Например,
SQL Server 2005 CE при использовании поставщика данных .NET Compact Framework для SQL Server Mobile имеет возможный параметр Режим = Read Only;
. (см. на connectionstrings.com ).
SQL Server 2008, не .
Для получения дополнительной информации см. connectionstrings.com .
Нет ничего, что вы не можете сделать на уровне строки соединения, который предотвращает пишет, кроме изменения пользователя - который вы уже говорили, что не можете сделать.
В этом случае вам просто нужно сделать все возможное в вашем коде, чтобы предотвратить любые пишеты; I.E:
, однако, все равно ничего не останавливает программист, выключающий строку подключения и задерживая ее внутри собственного подключения для выполнения пишет.
Вы можете, следовательно, переместите соединительную строку где-то еще, что только внутренний код знает, как получить доступ (он все еще будет управленческим файлом, не используйте константу кода!); Это все еще не останавливает кого-либо использовать его - но это делает его намного сложнее.
(добавлено) Я должен объяснить, почему он не защищает его.
Оставляя в стороне, что источник самой строки соединения, вероятно, будет доступен даже путем защиты с библиотеками шифрования и т. Д., Ничто не останавливает меня, отражая вашему коду и позвонив ему, кроме уровней доверия. Вы можете пойти по всему маршруту запутанного пути, чтобы помешать мне деконструировать свой код; Но, конечно, этот уровень паранойи не требуется в вашем доме развития?
В конечном итоге, хотя, потому что это «SEP» (чужой проблемой), как вы его положили, и вы не контролируете это - если кто-нибудь спрашивает, почему, Несмотря на ваши лучшие усилия, вы не можете гарантировать , что не будет выполнено никаких писем, вы можете смело обвинить это «кто-то еще».
Нет, ни в коем случае (о чем я знаю). К сожалению для вас, правильным способом было бы изменить права текущего пользователя, или создать нового пользователя с только выбранными привилегиями. Я понимаю, что это не тот ответ, который вы ищете, но наличие Sql сервера, который выходит из строя, когда вы пытаетесь что-то изменить в нем, кажется, является проблемой, на которую действительно стоит обратить внимание. Это из-за того, что вы используете учетную запись "sa" для подключения? Если да, то вы должны создать другого пользователя и дать ему соответствующие права.