2010-01-14 109 views
0

我正在使用使用ADO访问数据的SQL Server数据库作为后端的Delphi/WIN32应用程序。有许多用户使用这个应用程序,但有一个用户使用特殊设置:他们有多个数据库模式,每个模式都包含应用程序的完整数据模型。每个模式还有一个数据库用户,该用户默认为特定模式。他们还为每个数据库用户提供一个单独的登录帐户,允许他们通过在连接字符串中使用不同的登录帐户来控制要使用的模式。 他们使用此设置有一个支持多个办公室的单一中央数据库。通常,每个办公室都有它自己的数据库,但在这里,每个办公室都有自己的模式。如何切换数据库模式?

我喜欢他们使用的解决方案。我之前没有想到过,因为应用程序通常由单个办公室使用。只有这个客户需要有一个集中的数据库。该应用程序工作得很好,即使它不知道这些模式,只是因为登录帐户将默认为正确的模式。

但是现在他们已经问过是否有可能以用户可以选择他们想要连接的模式的方式更改代码。因此,用户需要能够在应用程序中的模式之间切换。我不想重写代码来支持这些模式,因为我需要保持SQL代码数据库的中立性。所以我正在寻找一种方法将用户切换到另一个模式,而不会对代码本身造成太大影响。

有什么建议吗?

回答

0

如何更改用户的默认模式?

ALTER USER <user name> 
    WITH DEFAULT_SCHEMA = <desired schema>; 

当然,你需要执行这个下提升的权限,因为我敢肯定你没有用ALTER USER功能的所有用户。

+0

我已经考虑过了,但它会影响数据库用户,而不是登录帐户。可能有多个登录帐户链接到数据库用户,他们都会查看其他架构。不是一个好主意。 – 2010-01-14 14:50:58

+0

我不明白,你似乎表示登录:用户是1:1:“为每个数据库用户单独登录帐户” – 2010-01-14 15:38:54

+0

不幸的是,没有。用户和登录之间有1:n的关系。但每个登录只能连接1个用户。 – 2010-01-14 16:16:53