2012-01-27 3 views
2

Моя компания хочет иметь около 100 своих продавцов (распределенных по всей стране), чтобы иметь возможность запускать хранимые процедуры из excel и возвращать данные в электронную таблицу.Как безопасно подключать Excel к SQL Server 2008?

У нас есть сервер sql 2008. Мне нужно найти безопасный способ сделать это.

Я создам форму в excel, где пользователь может нажать кнопку команды, чтобы обновить данные на основе параметров, которые они выбирают.

  1. Как я могу гарантировать, что соединение с excel на сервере sql безопасно?
  2. Как запустить хранимую процедуру от excel?

я нашел, что это очень хорошая информация: http://office.microsoft.com/en-us/excel-help/connect-to-import-sql-server-data-HA010217956.aspx

Проверка подлинности Windows Выберите этот параметр, чтобы использовать пользователь имя для Windows и пароль текущего пользователя. Это самый безопасный метод, , но он может повлиять на производительность, когда многие пользователи подключены к серверу .

Однако, я бы хотел, чтобы ваш ввод был получен.

Да, у торговых представителей есть окна входа в систему, но могу ли я использовать это решение, если они действительно будут вводить задание критериев данных, а затем отправляют критерии в хранимую процедуру и затем получают данные с сервера?

+0

Вы не можете использовать веб-интерфейс или что-то еще? Очень просто выполнить хранимую процедуру и вернуть csv/xls. Делать это от excel просто кажется совершенно ненужным. – user606723

+0

@ user606723 Я полностью согласен с тобой, но мой босс хочет использовать excel –

+0

Поскольку вы будете распространять этот VBA, я постараюсь сделать VBA максимально простым и простым. Хороший способ сделать это, было бы ... загрузить VBA CSV из веб-интерфейса = p. Вы также должны попытаться убедить своего босса в том, что делать это в excel - это ужасное решение. – user606723

ответ

3

Предоставление пользователям прямого доступа к вашей базе данных сложно. Во-первых, вы подвергаете себя атаке извне, поскольку учетные записи пользователей скомпрометированы чаще, чем хорошо изолированные учетные записи администратора и службы. Сказав это, учетная запись пользователя должна быть скомпрометирована, чтобы позволить злоумышленнику войти в систему, и у вас есть хорошая степень детализации управления, встроенная в SQL Server, если каждый пользователь имеет свои собственные учетные данные.

Использование интерфейсов на основе Excel не отличается от того, как это делается с помощью VBA или VSTA, как это делало большинство разработчиков за последнее десятилетие или около того. Эти методы настолько же безопасны, как и ваша сеть. Я считаю, что функциональность Excel-native работает без посторонних ссылок, что особенно приятно для обслуживания. Главное отличие заключается в способности делать произвольные запросы. Для обеспечения безопасности и целостности данных это, вероятно, самое лучшее.

Запуск хранимой процедуры, вероятно, не является хорошей идеей, так как вы можете получить массовые требования к поддержке, если ваши пользователи начинают часто нуждаться в настройках. Можете ли вы сделать это? Встроенные функции фильтрации и сортировки Excel довольно мощные. Это был бы мой первый подход.

Есть несколько подходов, в зависимости от ваших потребностей:

1 - изменить вашу схему, чтобы базы данных, чтобы связать данные для отдельных пользователей

2 - переместить код доступа в VBA макрос, связанный с книгой , Это не рекомендуется, но это позволит вам использовать ADO напрямую. Убедитесь, что у вас есть надежная конфигурация безопасности на стороне базы данных, если вы это сделаете, поскольку злоумышленник, который получает доступ к учетной записи пользователя, сможет делать все, что может сделать пользователь.

Чтобы перейти по маршруту VBA, в среде VBA Tools-> Ссылки, чтобы найти последнюю версию Microsoft ADO. Код VBA выглядит примерно так:

Dim Connection as ADODB.Connection 
Set Connection = new ADODB.Connection 
Connection.Open"Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;" 
Dim command As ADODB.command 
command.CommandText = "exec sp_something" 
Dim Parameters(2) As ADODB.Parameter 

Set Parameters(1) = New ADODB.Parameter 
Parameters(1).Name = "field_name" 
Parameters(1).Type = adVarChar 
Parameters(1).Size = 50 

Set Parameters(2) = New ADODB.Parameter 
Parameters(2).Name = "field_name_2" 
Parameters(2).Type = adVarChar 
Parameters(2).Size = 50 

Dim i As Integer 
For i = LBound(Parameters) To UBound(Parameters) 
    command.Parameters.Append Parameters(i) 
Next i 

Dim Records As ADODB.Recordset 
Set Records = command.Execute 

шнурок макроса кнопки, установите свои значения с помощью листа или поля ввода, и жарьте. Но я повторю свое предупреждение: «Идти таким образом ведут к массовым требованиям поддержки. Если люди хотят извлекать пользовательские данные, то они очень подробно описывают это.

+0

Большое вам спасибо за ваш ответ. im не уверен, могу ли я делать просмотры, потому что пользователям нужно будет предоставлять параметры. это все еще возможно с точки зрения? вы предполагаете, что все в порядке, чтобы сделать это с помощью windows authenticaiton? –

+0

Это было бы безопасно в том смысле, что ваши соединения не будут перехватываться. Пока вы будете осторожны в отношении разрешений, которые вы им предоставляете (т. Е. Читайте только на ограниченном числе объектов БД), он также будет защищен с точки зрения сохранения целостности данных. В большинстве случаев это больше подвержено атаке, чем хорошо построенная веб-архитектура, но пока ваши пользователи достаточно осторожны, их не следует скомпрометировать, и даже если они вам подвержены только краже данных, а не потере данных , –

+0

Виды позволяют вам жестко задавать параметры, но нет, вы не сможете указывать параметры с помощью этой конфигурации. Вот почему я упомянул о фильтрации и сортировке, встроенных в Excel - образованные пользователи могут использовать эти основные инструменты, чтобы вытащить нужные им данные. –

1

Вместо ссылки, которую вы связали, я бы предпочел использовать скрипт VBA со ссылкой на библиотеку ADO и обычную строку соединения с техническим пользователем SQL.

Поскольку в этом случае пароль будет в строке соединения, этот технический пользователь не должен иметь никаких других прав, кроме выполнения хранимых процедур.

Дайте мне знать, если вам нужно больше деталей.

+0

большое спасибо за ваш ответ. так что это отличный инструмент для этого? –

+0

Вы знаете, что в идеальном мире Excel не существует. Я не говорю, что все в порядке, но я сделал что-то еще хуже. Отдел компании без надлежащих инструментов, но необходимо измерить ключевые показатели ключевых процессов. Скажем просто, что это работает. Как вы можете сделать свой обед с швейцарским армейским ножом. Это нехорошо, но это работает. –

Смежные вопросы