B. *_*non 3 sql-server linqpad
我需要从另一个数据库中的表中获取一个值; 如果表位于同一个数据库中,那将非常简单,但由于它们不是,因此使问题复杂化.我试过这个:
SELECT TOP 8 prosql05.sa.cpsdata.M.membername,
P.*
FROM prosql05.sa.bidata.priceexceptionhistorycsr P
JOIN prosql05.sa.cpsdata.members M
ON P.memberno = M.memberno
WHERE invoicedate BETWEEN '2016-09-04' AND '2016-09-10'
ORDER BY invoicedate
Run Code Online (Sandbox Code Playgroud)
...但得到错误的消息(在LINQPad中),
错误208:无效的对象名称"sa.BIData.PriceExceptionHistoryCSR".
我很确定这是可能的(因为它们都在PROSQL05上),但是怎么样?
在LINQPad中选择的连接是" PROSQL05.sa.BIData "
我改变了我的尝试:
select top 8 M.MemberName, P.*
from PriceExceptionHistoryCSR P, PROSQL05.sa.CPSData M
where InvoiceDate between '2016-09-04' and '2016-09-10'
and M.MemberNo = P.MemberNo
order by invoicedate
Run Code Online (Sandbox Code Playgroud)
...现在得到," 错误208:无效的对象名称'PROSQL05.sa.CPSData'. "
这对我来说更有意义,但我仍然需要知道如何从BIData架构/数据库访问其他数据库(Schema,IOW CPSData).
根据LINQPad的属性对话框Server = PROSQL05,User name = sa和Database = BIData.
那么这些知识如何影响SQL的结构?
在寻址数据库时,您始终必须使用此表单
<servername>.<databasename>.<schemaname>.<tablename>
Run Code Online (Sandbox Code Playgroud)
如果您的连接位于同一台服务器上,则可以省略第一部分,而不是
<databasename>.<schemaname>.<tablename>
Run Code Online (Sandbox Code Playgroud)
如果您的连接是同一个数据库,则可以再次省略第一部分
<schemaname>.<tablename>
Run Code Online (Sandbox Code Playgroud)
但是让我们备份,你试图访问同一台服务器上的另一个数据库.这意味着您可以省略其中一个数据库,另一个必须指定.我将假设所有表都在模式中dbo,这可能就是这种情况.
如果您的连接是直接连接,您应该像这样查询 bidata
SELECT TOP 8 M.membername,
P.*
FROM dbo.priceexceptionhistorycsr P
JOIN cpsdata.dbo.members M
ON P.memberno = M.memberno
WHERE invoicedate BETWEEN '2016-09-04' AND '2016-09-10'
ORDER BY invoicedate
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |