议程:我们希望实现一种方案,我们应该能够将生产 SQL azure DB 中推送的所有数据同步到 Test SQL Azure DB [通过SQL Azure中的“同步到其他数据库”功能托管在相同的SQL服务器下。
错误:“带有'。'的数据库对象名称。或']'或'['不支持 [![Azure SQL数据同步功能中的错误日志]
**限制:**
来源:https://docs.microsoft.com/en-us/azure/sql-database/sql-database-sync-data
问题:通常,几乎所有数据库的架构都与 dem.customer_table 等非常相似。我们的dB也是如此。
询问:
我们可以使用任何技巧来成功注册 同步服务?
预先感谢!
答案 0 :(得分:0)
带下划线的表名很好。 您确定了造成问题的人吗?数据库名称可以吗?几张带有禁止字符的表?
在不同架构下,没有相同表名的替代方法。
您是否考虑过地理复制功能?您可以对同一区域启用地理复制。
您还可以使用Azure自动化来自动化每日数据库副本。
答案 1 :(得分:0)
使用以下skript,您可以用“。”标识表或列。或'['或']'
--Tables
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG='NameDB'
and
(
TABLE_NAME like '%.%' or
TABLE_NAME like '%[%' or
TABLE_NAME like '%]%'
)
--Columns
SELECT c.name AS 'ColumnName'
,t.name AS 'TableName'
,*
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE
c.name like '%.%'
or c.name like '%[%'
or c.name like '%]%'
ORDER BY TableName
,ColumnName
我们面临着同样的问题。我们删除了SyncUser的sysadmin角色,仅在所需的表上限制了模式的权限。这样,我们排除了导致表出现问题的可能性。您还可以在指定对象上拒绝选择。
在AzurePortal中加载架构之后,可以再次向您的用户授予SysAdmin。否则,他无法使用所需的帮助表来创建needet模式。 您还可以在数据库下的“安全性”下,对由Sync本身“ DataSync”创建的架构授予高级权限。
对我们有用。