Необходимо узнать, как установить соответствующие разрешения для базы данных SQL Server, чтобы разрешить синхронизацию через Sync Framework 2.1 - PullRequest
1 голос
/ 07 ноября 2011

SQL Server не является моей сильной стороной, и я начинаю заблудиться, проходя мимо базовой таблицы создания, выбора из таблицы и т. Д.

Я пытаюсь настроить сценарий синхронизации базы данных с Microsoft SQLCompact 3.5.Синхронизация базы данных через Прокси и базу данных SQL 2008 R2.Он синхронизируется через Microsoft Sync Framework 2.1.

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

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

Согласно статьям Microsoft, мне нужно сделатьследующий ...

Используйте принцип наименьшего разрешения.Не предоставляйте больше разрешений, чем требуется для выполнения конкретной задачи.Например, не предоставляйте разрешения INSERT для таблиц базы данных сервера, которые участвуют в синхронизации только для загрузки.Для операций синхронизации требуются следующие разрешения:

Разрешения EXECUTE для всех хранимых процедур, которые Sync Framework использует для чтения и записи в таблицы метаданных и базовые таблицы.

SELECT, INSERT, UPDATE,и УДАЛИТЬ разрешения для таблиц метаданных и любых базовых таблиц, которые будут обновлены во время сеанса синхронизации.

При подготовке баз данных SQL Server, использующих SqlSyncProvider, учитывайте следующие требования к разрешениям для обеспечения:

Разрешения CREATE TABLE для включения создания таблиц метаданных: scope_info и scope_config, а также таблиц отслеживания, которые создаются для каждой базовой таблицы.

ALTER TABLE для добавления триггеров в базовые таблицы.

Разрешения CREATE PROCEDURE для создания процедур, необходимых для Sync Framework.

Разрешения SELECT и INSERT для таблиц scope_info и scope_config.

Разрешения SELECT для базовых таблиц.

Я позволил мастерам в Visual Studio 2010 создать для меня базу данных Sync и прокси.

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

Где я могу их найти и как мне настроить соответствующие разрешения?

Я предоставил разрешения на чтение и запись данных, вставку, обновление, удаление и выбор, а также выполнение на базе данных SQL Server, но синхронизация не удалась.Я также предоставил пользователю полномочия «Создать таблицу», «Создать процедуру» и «ALTER» в базе данных для пользователя, но он все равно не работает.

Если я включаю для пользователя роль db_owner - это работает.* Я получаю сообщение об ошибке:

Невозможно инициализировать клиентскую базу данных, потому что схема для таблицы 'tblApplications, tblApplicationConfiguration, tblApplicationInstallProperties, tblApplicationPreRequisites, tblApplicationTypes, tblComputerTribTrivItribTIvItrivTIWDTIWRI-TIBESTVESTVESTVESTVESTVESTSP-TCRS, tblFunctions, tblLocationApps, tblLocationComputers, tblLocationIPAddress, tblLocations, tblLocationUsers, tblPermissions, tblRegionLocations, tblRegions, tblRegisteredModules, tblRequestFormats, tblRequestStatus, tblRequestTypes, tblRoles, tblRoleUsers, tblSecurity, tblUsers, tblVehicle, tblVehicleLocationMap, tblVehicleMake, tblRequestProcessingStatus, tblDriveStatus, не может быть tblVideoViewTypes'извлекается методом GetSchema () DbServerSyncProvider.Убедитесь, что вы можете установить соединение с клиентской базой данных и что свойство SelectIncrementalInsertsCommand или свойство SelectIncrementalUpdatesCommand SyncAdapter указано правильно.

Я не могу использовать роль db_owner после ее освобождения.

Ответы [ 3 ]

2 голосов
/ 07 ноября 2011

В Sync Framework есть два типа поставщиков баз данных: автономный поставщик (SqlCeClientSyncProvider / DbServerSyncProvider), который используется элементом проекта «Локальный кэш базы данных» и поставщиком совместной работы / одноранговой связи (SqlSyncProvider / SqlCeSyncProvider).

автономные провайдеры не используют таблицы scope_xxx, так как вы их не найдете.

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

0 голосов
/ 27 ноября 2017

Как упоминалось в июнеT, вам следует включить отслеживание изменений

ALTER DATABASE YourDataBaseName  
SET CHANGE_TRACKING = ON  
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)  
0 голосов
/ 07 ноября 2011

Я не уверен, поможет ли это, но я нашел это :

Попробуйте вместо этого установить UploadOnly для объекта SyncTable. Когда вы устанавливаете его в SyncAdapterBuidler, инкрементные команды выбора не создаются компоновщиком. Эти команды используются для получения схемы таблицы из базы данных. Поскольку они отсутствуют, вы получаете ошибку схемы.

Также, возможно, эта запись в блоге поможет.

...