Использование роли приложения с помощью проектов Microsoft Access и SQL Server 2000 Desktop Edition

Переводы статьи Переводы статьи
Код статьи: 308312 - Vizualiza?i produsele pentru care se aplic? acest articol.
Дополнительно: Требует эксперта кодирования, взаимодействия и в многопользовательском навыки.

Эта статья касается только проект Microsoft Access (.adp).

Microsoft Access 2000 версии этой статьи См 318816.
Развернуть все | Свернуть все

Аннотация

В данной статье объясняются возможности ограничения и методы решения проблемы с помощью Microsoft SQL Server приложения ролей в Проект Microsoft Access (ADP).

Дополнительная информация

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

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

Один метод, который часто используется Для временного решения, это будет только предоставить необходимые разрешения для одного SQL Учетная запись сервера. Реальные пользователи могут иметь разрешения на подключение к База данных, но не позволяет просматривать и изменять любые данные. После подключения пользователя к затем делает базу данных с помощью отдельной учетной записи пользователя, ADP программно повторное подключение с использованием учетных данных учетной записи пользователя, выполняющего разрешения. Хотя это может быть эффективным, оно не позволяют различать пользователей в базе данных или определить, какой пользователь выполнит определенного действия.

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

Создание роли приложения

Microsoft Access проекты не имеют любого визуального проектирования средства для создания безопасности SQL Server объекты такие как роли приложений. Корпорация Майкрософт рекомендует использовать клиентские средства, которые входят в состав обычные версии SQL Server или Microsoft Office XP для разработчиков по созданию роль приложения и назначения его разрешения. Тем не менее можно будет создать роль приложения и программным путем, предоставить ей необходимые разрешения с помощью языка Transact-SQL (T-SQL) из ADP. Хотя полное описание SQL Безопасность сервера находится вне области в данной статье, дополнительные сведения можно найти в Документации по SQL Server Ниже показано, как программно создавать роль приложения и предоставить новую роль Выберите разрешения на таблицу:
  1. Запустите Access.
  2. Откройте проект Access "Northwind".
  3. В окне базы данных нажмите кнопку Модули Из списка Объекты, а затем нажмите кнопку Новый Чтобы открыть новый модуль в среде Visual Basic.

    Примечание В Access 2007 нажмите кнопку Модуль В диалоговом окне Другие Группировать по Создание Вкладка.
  4. Введите или вставьте следующий код в новый модуль:
    Public Function AddNewAppRole(RoleName As String, PW As String) As Boolean
    On Error GoTo EH:
    If CurrentProject.IsConnected Then
    Dim sTSQL As String
        'Create the command
    sTSQL = "EXEC sp_addapprole '" & RoleName & "','" & PW & "'"
        'Send the command
    Application.CurrentProject.Connection.Execute sTSQL
    AddNewAppRole = True
    Else
    AddNewAppRole = False
    End If
    Exit Function
    EH:
    MsgBox Err.Number & ": " & Err.Description, vbCritical
    AddNewAppRole = False
    End Function
    					
  5. Сохраните модуль и выйдите из Visual Basic Среда.
  6. Создать копию Клиенты Таблица, а затем сохраните его как tNewTable. Чтобы сделать это, выполните следующие действия.
    1. В окне базы данных щелкните правой кнопкой мыши Клиенты Таблица, а затем нажмите кнопку Сохранить как в контекстном меню.

      Примечание В Access 2007 нажмите кнопку Клиенты таблицы в области переходов, щелкните Кнопки Microsoft Office, выберите пункт Сохранить как, а затем нажмите кнопку Сохранить объект как.
    2. В Сохранить как диалоговое окно, тип tNewTable В диалоговом окне Сохранение таблицы «Customers» поле, а затем нажмите кнопку ОК.
  7. В окне базы данных нажмите кнопку Формы Из списка Объекты, нажмите кнопку Новый, а затем нажмите кнопку ОК Чтобы открыть новую форму в режиме конструктора.

    Примечание В Access 2007 нажмите кнопку Конструктор форм В диалоговом окне Формы Группировать по Создание Вкладка.
  8. Добавление кнопки в новую форму.
  9. Установка (OnClick) свойства новой кнопки следующее событие процедура:
    On Error GoTo EH:
    'Code only works if ADP is connected.
    If CurrentProject.IsConnected Then
        Dim bNewAppRole As Boolean, strTSQL As String
        Dim strRoleName As String, strPW As String
        strRoleName = "AppRoleName"
        strPW = "Password"
        'Call function to create app role.
        bNewAppRole = AddNewAppRole(strRoleName, strPW)
        'Test to see if it failed.
        If bNewAppRole = False Then
            Exit Sub
        End If
        MsgBox "New Application role '" & strRoleName & "' created", vbInformation
        'Create command to grant permissions.
        strTSQL = "Grant Select on tNewTable to " & strRoleName
        'Send the command.
        Application.CurrentProject.Connection.Execute strTSQL
        MsgBox "Select permissions granted on tNewTable for " & strRoleName
    Else
    MsgBox "ADP must be connected to SQL Server"
    End If
    Exit Sub
    EH:
    MsgBox Err.Number & ": " & Err.Description, vbCritical
    					
  10. Закройте среду Visual Basic для возврата форма.
  11. Сохраните форму, а затем переключитесь в форме Форма Представление.
  12. Нажмите кнопку команды для выполнения базового кода.

    Обратите внимание, Получение двух окон сообщений в случае успеха. После получения создается роль приложения и второй после новой роли предоставляются разрешения на tNewTable.

Реализация роли приложения

Основной сложность при использовании ролей приложения в Является проектов Microsoft Access, Access использует три подключения к SQL Server для обработки различные задачи. В идеале, роль приложения ко всему проекту, пришлось бы выполнять sp_setapprole в контексте всех трех соединений. Обрабатываемые объекты Ниже приведены для каждого подключения.

  1. Используется для определения объектов, которые появляются в базе данных окна и для выполнения административных задач различные базы данных.

    Используется для Открытие таблиц, представлений, хранимых процедур, функций и источников записей для форм и subreports (но не для главного сообщает о себе).

    Используется для Получение источников записей для поля со списком, списки и отчеты.
  2. Используется для открытия таблицы, представления и хранимые процедуры функции и источников записей для форм и подчиненных отчетов (но не для основной отчет в целом).

    Для получения источников записей для поля со списком поля, списки и отчеты.
  3. Используется для получения источников записей для поля со списком, список поля и отчеты.

Несмотря на то, что довольно может осуществляться подключения # 2 и # 3 легко, не существует метода для выполнения хранимой процедуры в Контекстное соединение # 1. К счастью это подключение является наименее важных из трех и легко альтернативное решение, создав собственный пользователя Обработка объектов базы данных интерфейса (например, кнопочная форма) Вместо того чтобы полагаться на встроенное окно базы данных.

Ниже действия используйте проект Access "Northwind" для демонстрации применения роль приложения от подключения # 2 и # 3:

  1. В окне базы данных нажмите кнопку Формы Из списка Объекты, нажмите кнопку Новый, а затем нажмите кнопку ОК Чтобы открыть новую форму в режиме конструктора.

    Примечание В Access 2007 нажмите кнопку Конструктор форм В диалоговом окне Формы Группировать по Создание Вкладка.
  2. Добавить поле со списком для вновь создаваемых форм, а затем установите Имя свойства в раскрывающемся списке lst_AppRole.
  3. Добавьте кнопку на форму.
  4. Установка (OnClick) свойства новой кнопки следующее событие процедура:
    On Error GoTo EH
        'This avoids a message that no records were returned.
    DoCmd.SetWarnings False
    Dim TSQL
    TSQL = "EXEC sp_setapprole 'AppRoleName', {Encrypt N 'Password'}, 'odbc'"
        'This sets the app role on Connection #2.
    Application.CurrentProject.Connection.Execute TSQL
        'This sets the app role on Connection #3.
    lst_approle.RowSource = TSQL
    lst_approle.Requery
    DoCmd.SetWarnings True
    MsgBox "The application Role is now in effect.", vbInformation
    Exit Sub
    EH:
    MsgBox Err.Number & ": " & Err.Description, vbCritical
    					
  5. Закройте среду Visual Basic для возврата форма.
  6. Сохраните форму, а затем переключитесь в формеФорма Представление.
  7. Нажмите кнопку команды для выполнения базового кода.

    Обратите внимание, что появляется окно сообщения, которое указывает на успешное завершение.
  8. В окне базы данных нажмите кнопку Таблицы Из списка Объекты, а затем откройте tNewTable Таблица.

    Примечание В Access 2007 дважды щелкните значок tNewTable таблицы в области переходов.
  9. Измените запись и попытаться сохранить изменения.
Обратите внимание, что при попытке сохранения изменений, появляется сообщение об ошибке о отсутствие необходимых разрешений. Это происходит потому, что выбранное вами новые роли приложения Выберите разрешение на tNewTable таблицы, но не Обновление разрешение.

Макеты, Access отображает только объекты в Окна, для которого пользователь имеет по крайней мере выбора базы данных или разрешения на выполнение. Microsoft Access использует соединение # 1 для определения, какие объекты пользователь имеет разрешения для. После применения к подключениям # 2 и # 3, базы данных роли приложения окно показывает же объекты, что раньше, даже если пользователь больше не может иметь разрешения на все объекты, или может иметь разрешения на Дополнительные объекты, которые не отображаются. Это может привести к непредвиденному поведению при Используйте окно базы данных.

Например, при открытии Таблица tNewTable он «появляется», чтобы пользователь имел разрешения на изменение и Вставка записей. Значок вставки новой записи в нижней части таблицы является включена, и пользователь имеет возможность помещать записи в режиме редактирования. Не вижу ни одной визуальное подтверждение того, чтобы указать, в противном случае до попытки фиксации редактирования или вставки, какие результаты в сообщении об ошибке. Access считает, есть разрешения при Вы не.

Наиболее эффективное решение состоит в предоставлении настраиваемый интерфейс пользователя, а не полагаться на окно базы данных. С помощью пользовательский интерфейс типа кнопочную форму, можно управлять точно, какие объекты пользователь имеет доступ.

Другие ограничения и вопросы безопасности

Subforms не работает

В отличие от других объектов базы данных Microsoft Access не поддерживает всегда используйте одно подключение для получения источника данных подчиненной формы. Доступ часто (но не всегда) создает новое подключение к SQL Server только до обработки набора записей подчиненной формы или для извлечения связываемые поля данных, Подключает подчиненной формы в главную форму. Поскольку новые подключения не происходит применяется для выполнения роли приложения, разрешения ошибка может появляться, если вы не иметь явные разрешения для объекта базы данных. К сожалению это означает, что невозможно использовать присоединенные подчиненные формы, когда приложение роли применяются. Единственным эффективным решением проблемы является совершенно несвязанные подчиненные формы, с данными, выполнять программно. Это наиболее серьезные ограничения при использовании ролей приложения в Microsoft Access.

Отчеты не работает

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

Для временного решения Эта проблема всегда инструкции use языка Transact-SQL в качестве источника записей для формы и отчеты. Например используйте «Выберите * из ViewName» вместо просто «viewname» или "Exec StoredProcedureName" вместо просто «StoredProcedureName». Таким образом, Access передает инструкции Transact-SQL непосредственно в SQL Server и Извлекает данные, основанные на разрешения роли приложения.

Роль базы данных Public

Получает все разрешения роли приложения Роль базы данных Public. По умолчанию в NorthwindCS общей роли имеет полную разрешения для большинства объектов. Таким образом обычно является роль приложения неэффективной. При создании таблицы tNewTable в "Создание Роль приложения"раздел общей роли был не получают разрешение на таблицы, а позднее видели эффекты контекст безопасности роли приложения для этой таблицы. Тем не менее, другие таблицы не отображается разница в группе роль приложения, так как открытый роль имеет разрешения для тех, объекты.

Безопасности VBA

Так как пароль для роли приложения встроенные в приложение, из которого он вызывается, опытного пользователя Существует возможность прочитать имя и пароль из источника код, а затем использовать эту информацию для получения доступа к серверу SQL Server из другого приложения. Это хороший способ компиляции в файл ADE ADP Таким образом, чтобы исходный код не отображается. Как минимум, применить пароль Проект VBA.

Ссылки

Для получения дополнительных сведений о версии Microsoft Access 2000 в данной статье щелкните следующий номер статьи Приведенные ниже статьи базы знаний Майкрософт:
318816 ACC2000: Как использовать роли приложения с помощью проектов Microsoft Access и SQL Server 2000 Desktop Engine (MSDE 2000)
Для получения дополнительных сведений о GRANT, см. Документации по SQL Server. В Документации по SQL Server доступно на веб-узле корпорации Майкрософт:
http://www.Microsoft.com/SQL/techinfo/productdoc/2000/Default.ASP

Свойства

Код статьи: 308312 - Последний отзыв: 17 сентября 2011 г. - Revision: 5.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Ключевые слова: 
kbexpertiseinter kbinfo kbprogramming kbadp kbvba kbhowto kbmt KB308312 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:308312

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com