SqlServer 连接字串不使用数据库名 实现跨库查询

本文介绍了一种在同一服务器下跨数据库查询的方法,并利用查询结果作为参数调用另一数据库中的函数进行计算。通过调整连接字符串并指定完整表路径实现了这一目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此次运用需要在同一服务器下,在一个库中SQL查询一组数据,作为参数提交到一个另一个库的函数中进行计算,以前没玩过,问了下度娘,未得到可用结果,遂根据查到的零星信息猜想,取消连接字串里面的库名称试试能不能同时操作多个库,经测试,顺利一次通过运行成功!详见以下代码(以ASP为例):


    Set conn = Server.CreateObject("ADODB.Connection")
    SET Rs = Server.CreateObject("ADODB.Recordset")
    connstr= "Provider=SQLoledb;data source=.;UID=sa;PWD=youpassword;"  '不使用Initial Catalog=DBname"          
    conn.Open connstr
    sql="SELECT * FROM [DBname].[dbo].[TableName] where StationCode ='条件' " 
	rs.Open sql, conn ,1
	If Rs.eof And Rs.bof Then	
		Response.write  "查询 数据错误!" 		
		SID=""
	else	
		Response.write "SO2:" & rs.Fields("SO2").value & "
" end if CloseDB 2 sql="DECLARE @SO2_data decimal(20,10),@NO2_data decimal(20,10),@PM10_data decimal(20,10),@CO_data decimal(20,10),@O3_1h_data decimal(20,10),@O3_8h_data decimal(20,10),@PM25_data decimal(20,10),@des varchar(100),@PrimaryPollutant varchar(30),@AQI varchar(10);SELECT @CO_data=convert(decimal(20,10),[CO_24h]),@NO2_data=convert(decimal(20,10),[NO2_24h]),@O3_1h_data=convert(decimal(20,10),[O3_24h]),@O3_8h_data=convert(decimal(20,10),[O3_8h]),@PM10_data=convert(decimal(20,10),[PM10_24h]),@PM25_data=convert(decimal(20,10),[PM2_5_24h]),@SO2_data=convert(decimal(20,10),[SO2_24h]) FROM [ProvincePublishV2].[dbo].[AQIDataPublishLive] where StationCode ='1004A';set @des='PrimaryPollutant';SELECT @PrimaryPollutant=[EnvDataProvince].[dbo].[fn_AQI_Publish] (@SO2_data,@NO2_data,@PM10_data,@CO_data,@O3_1h_data,@O3_8h_data,@PM25_data,@des);set @des='AQI';SELECT @AQI=[EnvDataProvince].[dbo].[fn_AQI_Publish] (@SO2_data,@NO2_data,@PM10_data,@CO_data,@O3_1h_data,@O3_8h_data,@PM25_data,@des);SELECT @PrimaryPollutant as 'PrimaryPollutant' ,@AQI as 'AQI';" rs.Open sql, conn ,1 If Rs.eof And Rs.bof Then Response.write "查询AQI错误!" SID="" else Response.write "PrimaryPollutant:" & rs.Fields("PrimaryPollutant").value & ", AQI:" & rs.Fields("AQI").value end if CloseDB 1 '----附关闭数据连接子程序-------------------------------- Public Sub CloseDB(allClose) '1 ,AllClose & Nothing '0 ,AllClose '2 ,RS Close '3 ,RS Close & Nothing On Error Resume Next If allClose = 1 Then If Not RS Is Nothing Then If RS.State = 1 Then RS.Close Set RS = Nothing '---------------- End If If Not conn Is Nothing Then If conn.State = 1 Then conn.Close Set conn = Nothing '--------------------- End If ElseIf allClose = 0 Then If Not RS Is Nothing Then If RS.State = 1 Then RS.Close End If If Not conn Is Nothing Then If conn.State = 1 Then conn.Close End If ElseIf allClose = 2 Then If Not RS Is Nothing Then If RS.State = 1 Then RS.Close End If ElseIf allClose = 3 Then If Not RS Is Nothing Then If RS.State = 1 Then RS.Close Set RS = Nothing '-------------- End If End If 'Response.write "function1 CONN closeed!" End Sub


里面的 DBname 即为正常连接时需要写在 Initial Catalog= 的库名,这里不写库名的话,在SQL语句中就必须带上库名加上[dbo] 标识再加上表名称来定位到数据表,切记!

即  [DBname].[dbo].[TableName] 

这样,更换了  DBname  后 就可以实现在多个库之间自由查询了。

此记.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jessezappy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值