0

议程:我们希望实现一个场景,我们应该能够通过SQL Azure 中的“同步到其他数据库”功能同步我们生产SQL azure DB中推送的所有数据以测试 SQL Azure DB [托管在同一 SQL 服务器下] .

错误: “带有 '.' 的数据库对象名称 或 ']' 或 '[' 不受支持 [![Azure SQL 数据同步功能中的错误日志]

**限制:**

  • 对象(数据库、表和列)的名称不能包含可打印字符句点 (.)、左方括号 ([) 或右方括号 (])。
  • 不支持名称相同但架构不同的表(例如 dbo.customers 和 sales.customers)。

来源:https ://docs.microsoft.com/en-us/azure/sql-database/sql-database-sync-data

问题:一般来说,几乎所有数据库的架构都与这个dbo.customer_table等非常相似。我们的 dB 也是如此。

问:

我们可以使用任何技巧来成功注册同步服务吗?

提前致谢 !

4

2 回答 2

0

带下划线的表名很好。你确定问题制造者了吗?数据库名称可以吗?有多少张带有禁止字符的表?

对于不同架构下的相同表名,没有解决方法。

您是否考虑过异地复制功能?您可以对同一区域启用异地复制。

还可以使用 Azure 自动化自动执行每日数据库副本。

于 2018-12-15T10:32:42.447 回答
0

使用以下脚本,您可以使用“。”标识表或列。或'['或']'

--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。否则,他无法使用所需的帮助表创建针刺模式。您还可以在数据库下的安全性下对由同步本身“DataSync”创建的架构授予大权限。

它对我们有用。

于 2020-06-15T11:05:50.133 回答