2

我正在将应用程序迁移到 SQL Azure 联合,我希望在没有 SQL 的情况下查看和编辑表内容(它只是为了测试)。

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

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

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

当然,这不适用于 SQL Azure 联合。你知道一个工具(甚至很简单),免费的(如果可能的话),在联盟成员中编辑我的数据?

4

1 回答 1

7

Edit top xxx rows顺便说一句,连接到 SQL Azure 数据库时,您不能从 SSMS 使用。此选项被禁用(它甚至没有在上下文菜单中列出)。

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

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

SQL Azure 联合

现在唯一剩下的就是让您知道哪个system-xxxxx数据库对应于哪个联邦成员。您也许可以从那篇文章中找到这一点。以下查询可能会有所帮助:

-- 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 Explorer 中选择的数据库的确切名称,并且能够直观地编辑内容。虽然它有点慢,但它是您要求的 GUI 工具。

于 2012-12-19T14:06:49.193 回答