顺便说一句,连接到 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 DB)。但是一旦你分裂,你就会想知道你需要与哪个确切的联邦成员数据库对话。
更新
有一种可靠的方法可以获取特定联合成员的准确数据库名称。您必须连接到要在其中编辑数据的联邦成员。例如,如果我们的联邦名为 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 Explorer 中选择的数据库的确切名称,并且能够直观地编辑内容。虽然它有点慢,但它是您要求的 GUI 工具。