一、c#**:
using system;
using system.data;
using system.data.sqlclient;
using system.data.sqltypes;
using microsoft.sqlserver.server;
using system.security.permissions;
using system.collections.generic;
public partial class storedprocedures
// mark the end of the result-set.
sqlcontext.pipe.sendresultsend();
}/// /// 一次查詢多個db
///
/// 連線串,多個以|分割
/// db的標識,多個以|分割
/// 要查詢的sql
[sqlprocedure]
public static void proc_dba_querymultidb(string connstrings, string flags, string sql)
;if (forbiddenwords.find(p => sql.tolower().indexof(p) != -1) != null)
string connstringarr = (connstrings ?? string.empty).split(new char , stringsplitoptions.removeemptyentries);
string flagarr =(flags ?? string.empty).split(new char , stringsplitoptions.removeemptyentries);
int i = 0;
sqldatarecord record = null;
listmetalist = new list();
bool builtstruct = false;
foreach (string connstring in connstringarr)
record = new sqldatarecord(metalist.toarray());
builtstruct = true;
sqlcontext.pipe.sendresultsstart(record);
}record.setstring(0, flag);
record.setstring(1, dbname);
for (int colidx = 0; colidx < sdr.fieldcount; colidx++)
catch (exception ex)
record.setstring(colidx+2, v);
}sqlcontext.pipe.sendresultsrow(record);}}
}//結束傳送
if (builtstruct)
}};
二、部署sql:
use master
go--1. 在sql server中啟用clr
exec sp_configure 'clr enabled', 1
goreconfigure with override;
go
--2. 在目標庫 [test] 設定trustworthy為on
alter database master set trustworthy on
go--sp_changedbowner 'sa',true
go--1. 刪除主程式集已有物件db
if object_id('[dbo].proc_dba_querymultidb') is not null
drop proc [dbo].proc_dba_querymultidb
go--2. 刪除主程式集已有物件db
if object_id('[dbo].storedprocreturnresultset') is not null
drop proc [dbo].storedprocreturnresultset
go--4. 刪除主程式集 studysqlclr
if exists(select * from sys.assemblies where name='studysqlclr')
drop assembly studysqlclr
go--3. 建立主程式集: studysqlclr
create assembly studysqlclr from 'd:\studysqlclr.dll' with permission_set = unsafe
gocreate proc [dbo].storedprocreturnresultset
as external name [studysqlclr].[storedprocedures].storedprocreturnresultset ;
goexec storedprocreturnresultset
gocreate proc [dbo].proc_dba_querymultidb
(@connstrings nvarchar(4000),
@flags nvarchar(4000),
@sql nvarchar(4000))as
external name [studysqlclr].[storedprocedures].proc_dba_querymultidb ;
goexec [dbo].proc_dba_querymultidbv1
@connstrings=n'data source=192.168.xx.xx,2014;initial catalog=master;user id=?;password=??;
|data source=192.168.xx.xx,2014;initial catalog=tempdb;user id=?;password=??;'
,@flags=n'廣東|廣西'
,@sql='select top 10 * from sys.tables'
一次新增多個帳戶
關於一次新增多個帳戶。dn,objectclass,samaccountname,userprincipalname,displayname,useraccountcontrol cn mary,ou market,dc sina,dc com user,mary,mary sina.com,mar...
MQTT一次訂閱多個主題
利用mqtt一次訂閱多個主題 在做智慧型家居相關的應用時候,需要利用訂閱所有裝置的主題。這個時候我們需要利用mqtt的萬用字元的功能,乙個訂閱可能包含特殊字元,允許你一次定義多個主題。主題層次分隔符被用來在主題中引入層次。多層的萬用字元和單層萬用字元可以被使用,但他們不能被使用來做發布者的訊息。1....
linux 一次執行多個命令
一次執行多個命令有多種寫法 1.命令之間用分號 隔開 順序執行各條命令,各命令的執行結果,不會影響其他命令的執行。即每個命令都會執行,但不保證每個命令都執行成功。2.命令之間用 隔開 若前面的命令執行成功,才會去執行後面的命令。4.命令之間用 隔開 是管道命令的界定符號,管道命令是將前乙個命令的輸出...