Я давно использую этот код, но недавно клиент спросил меня, возможно ли установить соединение как соединение только для чтения, чтобы убедиться, что никакие данные не были перезаписаны при использовании моего Excel-инструмента .
Есть много предыдущих сообщений, которые решают эту проблему, когда данные считываются из файла, но я не могу найти никаких ответов, которые делают это при подключении к базе данных (ну, по крайней мере, ни один, который работал по крайней мере).
Я обычно помещаю код в модуль класса и затемняю его в своем коде, где мне нужно отправить SQL. Самое замечательное в модуле класса - это то, что у меня никогда не возникало проблем с открытием соединения после остановки выполнения.
Кто-нибудь знает, что добавить в этот код, чтобы убедиться, что соединение не может быть использовано для отправки обновлений SQL?
И да, в идеале это должно быть установлено на SQL-сервере, а не на моем конце, но ...:)
Option Explicit
Public Connection As ADODB.Connection
Public Sub init()
Dim Server As String
Dim Database As String
Server = Worksheets("K").Cells(3, 3) ' <== This cell contains the name of the Database Server
Database = Worksheets("K").Cells(3, 4) ' <== This cell contains the name of the Database
Set Connection = New ADODB.Connection
With Connection
.Provider = "MSDASQL"
.ConnectionString = "DRIVER={SQL Server};SERVER=" + Server + ";DATABASE=" + Database
.ConnectionString = .ConnectionString + ";Trusted_Connection=Yes"
.CommandTimeout = 60000
.Open
End With
End Sub
Public Function RunSQL(SQL As String) As ADODB.Recordset
Set RunSQL = Connection.Execute(SQL)
End Function