你知道一个带有GUI的工具来编辑SQL Azure Federation中的数据吗?

时间:2012-12-14 20:05:41

标签: azure azure-sql-database federation

我正在将应用程序迁移到SQL Azure Federation,我喜欢在没有SQL的情况下查看和编辑表格内容(仅用于测试)。

使用标准SQL数据库(SQL Server或SQL Azure),我可以使用以下方法之一:

  • Management Studio(SSMS)查看和编辑数据:右键单击表格>编辑顶部xx行。

  • Visual Studio:在服务器资源管理器中,我连接到我的数据库,右键单击一个表,然后单击“显示表数据”。

当然这对SQL Azure Federation不起作用。 您是否知道一个工具(甚至简单),免费(如果可能),在联盟成员中编辑我的数据?

1 个答案:

答案 0 :(得分:7)

顺便说一下,当连接到SQL Azure数据库时,您无法使用SSMS中的Edit top xxx rows。此选项已禁用(甚至未在上下文菜单中列出)。

但它适用于Visual Studio(Visual Studio 2012 SQL Server Explorer)。这很有趣。

它也适用于联盟。您的联盟成员实际上是一个单独的数据库,其中包含一些奇怪的名称与VS SQL Server Explorer连接到SQL Azure Server。然后,当您列出树中的所有数据库时,您将在联合根目录旁边看到其他数据库:

SQL Azure Federations

现在唯一剩下的就是让您知道哪个system-xxxxx数据库对应哪个联合成员。您可以从that article找到此信息。以下查询可能会有所帮助:

-- Route connection to the federation root
USE FEDERATION ROOT WITH RESET
GO
-- View the federation root metadata
SELECT db_name() [db_name]
SELECT * FROM sys.federations
SELECT * FROM sys.federation_distributions
SELECT * FROM sys.federation_member_distributions ORDER BY federation_id, range_low;
GO

当您只有一个联合会只有一个联盟成员时,您的任务很容易实现(因为您只有一个system-xxx-xxx-x数据库)。但是一旦拆分,您将需要找出需要与之交谈的联邦成员数据库。

<强>更新

有一种可靠的方法可以获取特定联合成员的确切数据库名称。您必须连接到要编辑数据的联合成员。例如,如果我们的联盟名为MyFirstFederation且联合分发密钥名称为FederationKey,并且我们要连接到联合成员,其中数据对于联合密钥的值为10000,我们执行:

USE FEDERATION MyFirstFederation(FederationKey = 10000) WITH RESET
GO

在我们执行的相同上下文中:

SELECT * FROM sys.databases
GO

这将列出mastersystem-xxxx-yyy-zzz。前者将是确保拥有FederationKey值为10000的成员的完全数据库(以及具有该特定联合成员范围的所有其他成员)。

现在我们知道要在Visual Studio 2012 SQL Server资源管理器中选择的数据库的确切名称,并且能够直观地编辑内容。虽然它有点慢,但它是你要求的GUI工具。