我正在将应用程序迁移到SQL Azure Federation,我喜欢在没有SQL的情况下查看和编辑表格内容(仅用于测试)。
使用标准SQL数据库(SQL Server或SQL Azure),我可以使用以下方法之一:
Management Studio(SSMS)查看和编辑数据:右键单击表格>编辑顶部xx行。
Visual Studio:在服务器资源管理器中,我连接到我的数据库,右键单击一个表,然后单击“显示表数据”。
当然这对SQL Azure Federation不起作用。 您是否知道一个工具(甚至简单),免费(如果可能),在联盟成员中编辑我的数据?
答案 0 :(得分:7)
顺便说一下,当连接到SQL Azure数据库时,您无法使用SSMS中的Edit top xxx rows
。此选项已禁用(甚至未在上下文菜单中列出)。
但它适用于Visual Studio(Visual Studio 2012 SQL Server Explorer)。这很有趣。
它也适用于联盟。您的联盟成员实际上是一个单独的数据库,其中包含一些奇怪的名称与VS SQL Server Explorer连接到SQL Azure Server。然后,当您列出树中的所有数据库时,您将在联合根目录旁边看到其他数据库:
现在唯一剩下的就是让您知道哪个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
这将列出master
和system-xxxx-yyy-zzz
。前者将是确保拥有FederationKey值为10000的成员的完全数据库(以及具有该特定联合成员范围的所有其他成员)。
现在我们知道要在Visual Studio 2012 SQL Server资源管理器中选择的数据库的确切名称,并且能够直观地编辑内容。虽然它有点慢,但它是你要求的GUI工具。