Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 引用链接服务器而不指定服务器名称_Sql Server_Connection String_Linked Server - Fatal编程技术网

Sql server 引用链接服务器而不指定服务器名称

Sql server 引用链接服务器而不指定服务器名称,sql-server,connection-string,linked-server,Sql Server,Connection String,Linked Server,我有一个远程服务器,上面运行着一个SQL server实例。我只能通过VPN访问它,但我的用户希望能够在不使用VPN的情况下连接到它 我的计算机上也运行SQL Server,希望用户通过我的计算机连接到远程服务器。我读过关于链接服务器的文章,但似乎我必须在每个查询中使用服务器名称。 例如: select * from [192.168.0.45].[tblUser] select * from tblUser 我希望使用链接服务器的其他用户只需要使用表名。例如: select * from

我有一个远程服务器,上面运行着一个SQL server实例。我只能通过VPN访问它,但我的用户希望能够在不使用VPN的情况下连接到它

我的计算机上也运行SQL Server,希望用户通过我的计算机连接到远程服务器。我读过关于链接服务器的文章,但似乎我必须在每个查询中使用服务器名称。 例如:

select * from [192.168.0.45].[tblUser]
select * from tblUser
我希望使用链接服务器的其他用户只需要使用表名。例如:

select * from [192.168.0.45].[tblUser]
select * from tblUser

此外,当我使用链接服务器时,我必须在连接字符串中使用“master”,即使这不是我的数据库。

不可避免地必须使用引用远程对象,但可以使用同义词使远程表看起来像本地表

四部分名称由
[服务器名称].[远程数据库名称].[远程架构(通常为dbo)].[远程表名称]
组成,必须为针对链接服务器的查询指定所有部分

但是,您可以在本地数据库中使用,以避免每次引用表时必须指定由四部分组成的名称

CREATE SYNONYM [synonymName] FOR [four].[part].[name].[here]

例如,可以通过为每个表创建同义词来代理整个数据库。类似于以下的方法应该可以工作:

SELECT DISTINCT 'CREATE SCHEMA ['+TABLE_SCHEMA+'];'
FROM [INFORMATION_SCHEMA].[TABLES]
WHERE TABLE_SCHEMA <> 'dbo';

SELECT 'CREATE SYNONYM ['+TABLE_SCHEMA+'].['+TABLE_NAME+'] FOR [192.168.0.45].['+TABLE_CATALOG+'].['+TABLE_SCHEMA+'].['+TABLE_NAME+'];'
FROM [INFORMATION_SCHEMA].[TABLES];
选择不同的“创建模式['+TABLE_模式+”;”
来自[信息\模式][表]
其中表_SCHEMA'dbo';
选择[192.168.0.45].['+TABLE_CATALOG+'..['+TABLE_SCHEMA+'.].['+TABLE_NAME+'.]的“创建同义词['+TABLE_SCHEMA+'.['+TABLE_NAME+'];”
来自[INFORMATION_SCHEMA]。[TABLES];

运行这样一个脚本将生成一个脚本,您可以在服务器上运行该脚本,将其用作创建所有同义词的代理。

我不确定这个问题是否适合这样做。您最好是在服务器出现故障时,或者在堆栈交换的数据库页面上。尽管如此,我还是建议包含您正在使用的Microsoft SQL server版本的标记。但此错误与visual studio配置和连接字符串有关。事实上,我今天确实需要执行此操作来测试一个奇怪的条件。。。有趣的是,这个世界是如何运作的。谢谢@Mitch的编辑和回答。但是我怎么能在web.config中为这个结构编写一个连接字符串呢?你可以在机器上的数据库中创建同义词,然后连接到该数据库。连接字符串与普通字符串没有什么不同。看见