我有一个网站供客户用于报告目的,并希望客户选择我的网站直接读取他们的本地数据库(而不是他们提供文件格式的数据)。 在大多数情况下,他们的数据库将在其localhost上设置SQL Express。
如何通过我的网站使用asp.net / javascript等连接到客户端本地SQL服务器?如果客户端提供其连接字符串属性,则localhost将仅引用我的服务器的localhost ...
请考虑以下事项:
大多数人通过ISP连接到互联网。该数据库将在其本地主机上运行,并且不会有这样的公共地址。
理想情况下,客户端必须提供一些连接字符串(数据库名称,登录等),我的服务器必须连接。
VPN不适用于此 - 我必须以编程方式连接到它们并提取数据,而不是相反。
由于
答案 0 :(得分:1)
提供客户端防火墙已配置为允许连接到SQL Server(默认端口为1433),没有什么能阻止您创建与它的连接。但是,这样做有安全考虑。您的客户可能希望仅允许从您的Web服务器IP地址进行连接。
您可能还会考虑使用VPN,例如Windows或Hamachi提供的VPN。
答案 1 :(得分:1)
我认为如果运行数据库的计算机不在公共地址上,您将无法连接到远程数据库。他们需要1)指定他们的公共地址2)在他们的防火墙中打开正确的端口。根据他们的设置(带有简单路由器/防火墙的家庭办公室,带有防火墙的公司办公室,他们无法自由更改等),这可能会或可能不会提供足够的环节来跳过。
解决方法是让客户首先连接到您共享的VPN,例如Moo-Juice提到的。
编辑抱歉,在您的问题中错过了关于VPN的最后一部分。如果我正确地理解你,你基本上希望它们能够作为“客户”连接到你的应用程序,但他们发送的数据将是他们的数据库。但是,您希望这可以与不在Internet上公开共享其数据库服务器的客户端一起使用吗?对我而言,这似乎很难实现,但是我再也不擅长客户端脚本了。
答案 2 :(得分:0)
但是,如果您的客户提供SQL Server主机地址,ADO.NET或依赖它的任何层将连接到正确的服务器,而不是本地服务器。
我错了吗?
答案 3 :(得分:0)
您需要使用dns服务器,例如dyndns。您可以免费试用一个网址。然后设置一个iis服务器。
答案 4 :(得分:0)
我会设置一个本地SQL数据库并通过SilverLight应用程序连接。然后,您可以使用Web(WCF)服务读取数据并将数据提交回Web服务器/主数据库。
我找到了关于将Silverlight连接到本地SQL数据库的链接。
http://erikej.blogspot.com/2010/02/access-local-sql-compact-database-from.html