sqlserver2008 视图中跨服务器查询

sqlserver2008 视图中跨服务器查询,第1张

概述最近在做公司平台,遇到下面的问题: sql语句在程序和sqlserver的新建查询窗口中可以正确的执行,但是在视图中就出错,sql语句和错误如下: sql语句: select u.UserID AS CountTodayAccountID, u.UserID,u.UserName, (SELECT COUNT( c.

最近在做公司平台,遇到下面的问题:

SQL语句在程序和sqlserver的新建查询窗口中可以正确的执行,但是在视图中就出错,SQL语句和错误如下:

SQL语句:

select u.UserID AS CountTodayAccountID,u.UserID,u.Username,(SELECT  COUNT( c.CustomerID)  FROM dbo.Customer AS c  where c.UserID=u.UserID                                        AND DATEDIFF(DAY,c.CreateDate,GETDATE()) = 0 AND c.CustomerState = 4)  AS TrialAccounts /*今日试用*/,(SELECT COUNT(Amount)                                        FROM [172.20.67.236].ShtxFinance.dbo.AccountantFinal af                                         WHERE af.MID=u.UserAccount and (DATEDIFF(DAY,CreateDate,GETDATE()) = 0)                                         and IsChecked=1 ) as SuccefulAccount /*今日成单*/,(SELECT sum(Amount)                                         FROM [172.20.67.236].ShtxFinance.dbo.AccountantFinal af                                         WHERE af.MID=u.UserAccount and (DATEDIFF(DAY,GETDATE()) = 0)                                         and IsChecked=1                                         ) as CollectionAccount/*今日到款认账*/,(SELECT COUNT(ID)                                          FROM dbo.TracingContent tc inner join Customer cut on cut.CustomerID=tc.CustomerID                                        where(DATEDIFF(DAY,tc.CreateDate,GETDATE()) = 0) and cut.UserID=u.UserID )                                         as TelAccount/*今日电话量*/                                                    from VUserRole as u  where u.Rolename='业务员' and u.Status=1

通过查资料,终于找到了解决方法。

解决方法:

建立与跨服务器的数据库的连接:sp_addlinkedserver

EXEC  sp_addlinkedserver

      @server='DBVIP',--被访问的服务器别名

      @srvproduct='',

      @provIDer='sqlolEDB',

      @datasrc="172.20.67.236"  --要访问的服务器

 

EXEC sp_addlinkedsrvlogin

     'DBVIP',--被访问的服务器别名

     'false',

     NulL,

     'sa',--帐号

     'shtx' --密码

测试一下:

 select * from DBVIP.ShtxFinance.dbo.AccountantFinal

正确执行,结果如下

在视图中再把上面的SQL语句粘进去,注意把服务器名称换成连接时设置的别名,如下

保存,运行,OK了。

总结

以上是内存溢出为你收集整理的sqlserver2008 视图中跨服务器查询全部内容,希望文章能够帮你解决sqlserver2008 视图中跨服务器查询所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1172520.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存