Ich schrieb ein Programm in C# mit dem Microsoft Sync Framework, um zwei SQL-Datenbanken zu synchronisieren. Nach einer erfolgreich verlaufenen Server- und Client-Provisioning, setzen ich die folgenden Berechtigungen auf dem Client initiiert die Synchronisation:Welche Berechtigungen werden benötigt, um zwei SQL-Datenbanken mit Micorosoft Sync Framework mit Massenprozeduren zu synchronisieren?
GRANT VIEW CHANGE TRACKING ON OBJECT::dbo.My_Table to my_role
GRANT DELETE ON [dbo].[My_Table_tracking] TO [my_role] AS [dbo]
GRANT INSERT ON [dbo].[My_Table_tracking] TO [my_role] AS [dbo]
GRANT SELECT ON [dbo].[My_Table_tracking] TO [my_role] AS [dbo]
GRANT UPDATE ON [dbo].[My_Table_tracking] TO [my_role] AS [dbo]
GRANT DELETE ON [dbo].[scope_info] TO [my_role] AS [dbo]
GRANT INSERT ON [dbo].[scope_info] TO [my_role] AS [dbo]
GRANT SELECT ON [dbo].[scope_info] TO [my_role] AS [dbo]
GRANT UPDATE ON [dbo].[scope_info] TO [my_role] AS [dbo]
GRANT DELETE ON [dbo].[scope_config] TO [my_role] AS [dbo]
GRANT INSERT ON [dbo].[scope_config] TO [my_role] AS [dbo]
GRANT SELECT ON [dbo].[scope_config] TO [my_role] AS [dbo]
GRANT UPDATE ON [dbo].[scope_config] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_selectrow] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_update] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_updatemetadata] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_selectchanges] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_insertmetadata] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_insert] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_deletemetadata] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_delete] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_bulkupdate] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_bulkinsert] TO [my_role] AS [dbo]
GRANT EXECUTE ON [dbo].[My_Table_bulkdelete] TO [my_role] AS [dbo]
ich die folgenden Ressourcen verwendet, um das Skript zu setzen oben zusammen:
- Answer to Need to learn how to set appropriate permissions on SQL Server database to allow Synchronisation through Sync Framework 2.1
- Minimum Database Permissions Requirements for Microsoft Sync Framework
Allerdings, wenn ich das Programm ausführen, der folgende Fehler i s protokolliert:
An SqlParameter with ParameterName '@changeTable' is not contained by this SqlParameterCollection
den Benutzer Nach Zuordnen der Abfrage der eingebauten in db_owner
Rolle ausgeführt wird, funktioniert das Programm einwandfrei.
Gibt es eine Möglichkeit, kann ich die effektiven Berechtigungen zu my_role
und db_owner
gewährt vergleichen? Wie kann ich das Berechtigungsproblem mit SQL Server debuggen (das sql Serverprotokoll, das in ssms gezeigt wird, zeigt nichts an, das zu meinem Problem in Verbindung steht)? Oder: Welche genauen Berechtigungen werden benötigt, um Microsoft Sync Framework zwei Datenbanken mit Massenprozeduren zu synchronisieren?
Dank für den Hinweis auf die fn_my_permissions Funktion verwende ich es jetzt um den Vergleich zu tun. Ein sehr ausführlicher Bericht über ein ähnliches Problem wird [in den Microsoft-Foren] beschrieben (https://social.microsoft.com/Forums/en-US/cded4c01-5074-4d52-ba41-ceb500d92c17/an-sqlparameter-with-parametername -channetable-is-not-contained-by-this-sqlparametercollection? forum = syncdevdiscussions). – BdN3504