Alias/Synonym 对于基于用户的数据库
Alias/Synonym for a database based on user
是否可以有相同的查询,但基于当前登录的不同用户,从不同的数据库请求信息?
例如:我们有一个具有不同环境 dev/test/int 等的应用程序。对于每个环境,我们有不同的 JDBC 到 MSSQL 服务器的连接。主要思想是,始终具有相同的查询,如:
SELECT * FROM config_db.clients
但在内部,基于连接字符串中的当前用户(如 user_dev、user_test 等)从 config_db_dev、config_db_test 等获取响应。 ?我希望这个问题是有道理的。
提前致谢!
Is it possible to have the same query, but based on different user currently logged in, request the info from different databases?
当然可以。登录有 default database and users have a default schema.
这两者都会影响对象名称解析。
如果您使用由 1 部分组成的名称,例如
SELECT * FROM clients
然后 SQL 服务器将首先在用户的默认架构中查找名为“clients”的对象,然后在当前数据库的 dbo 架构中查找。
如果您使用由两部分组成的名称,例如
SELECT * FROM foo.clients
然后 SQL 服务器将在当前数据库的“foo”架构中查找名为“clients”的对象。
是否可以有相同的查询,但基于当前登录的不同用户,从不同的数据库请求信息?
例如:我们有一个具有不同环境 dev/test/int 等的应用程序。对于每个环境,我们有不同的 JDBC 到 MSSQL 服务器的连接。主要思想是,始终具有相同的查询,如:
SELECT * FROM config_db.clients
但在内部,基于连接字符串中的当前用户(如 user_dev、user_test 等)从 config_db_dev、config_db_test 等获取响应。 ?我希望这个问题是有道理的。
提前致谢!
Is it possible to have the same query, but based on different user currently logged in, request the info from different databases?
当然可以。登录有 default database and users have a default schema.
这两者都会影响对象名称解析。
如果您使用由 1 部分组成的名称,例如
SELECT * FROM clients
然后 SQL 服务器将首先在用户的默认架构中查找名为“clients”的对象,然后在当前数据库的 dbo 架构中查找。
如果您使用由两部分组成的名称,例如
SELECT * FROM foo.clients
然后 SQL 服务器将在当前数据库的“foo”架构中查找名为“clients”的对象。