最近在做公司平台,遇到下面的问题:
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 视图中跨服务器查询所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)