網上現有的全庫查詢,無法識別自定義架構的資料庫結構:
declare@str
nvarchar(10
)declare
@tablename
varchar(50
)declare
@colname
varchar(50
)declare
@counts
intdeclare
@sql
nvarchar(2000)--
以上定義變數
declare cur1 cursor
forselect a.name tablename,b.name colname from sys.objects a,syscolumns b where a.object_id
=b.id and a.type_desc=
'user_table'--
定義游標
set@str='
海'--設定要查詢的字元
open cur1 --
開啟游標
fetch
next
from cur1 into
@tablename,@colname
while(@@fetch_status
=0) --
迴圈begin
set@sql
=n'select @counts=count(*) from '+
@tablename+'
where charindex(
'''+
@str
+''','
+@colname+'
)>0
'exec sp_executesql @sql,n'
@counts int output
',@counts output --
執行動態sql
if@counts
>0--
判斷某個表某個字段是否存在特定字元
begin
@tablename+'
,'+@colname
--列印表名及欄位名
endfetch
next
from cur1 into
@tablename,@colname
endclose cur1 --
關閉游標
deallocate cur1 --
釋放游標
新增架構支援後,雖偶爾會有報錯,可查詢架構:
declare@str
nvarchar(10
)declare
@schemasname
varchar(50
)declare
@tablename
varchar(50
)declare
@colname
varchar(50
)declare
@counts
intdeclare
@sql
nvarchar(2000)--
以上定義變數
declare cur1 cursor
forselect s.name schemasname,a.name tablename,b.name colname from
sys.objects a,syscolumns b,sys.schemas s
where a.object_id
=b.id and a.schema_id=s.schema_id and a.type_desc=
'user_table'--
定義游標
set@str='
汙染'--設定要查詢的字元
open cur1 --
開啟游標
fetch
next
from cur1 into
@schemasname,@tablename,@colname
while(@@fetch_status
=0) --
迴圈begin
set@sql
=n'select @counts=count(*) from '+
@schemasname+'
.'+@tablename+'
where charindex(
'''+
@str
+''','
+@colname+'
)>0
'exec sp_executesql @sql,n'
@counts int output
',@counts output --
執行動態sql
if@counts
>0--
判斷某個表某個字段是否存在特定字元
begin
@schemasname+'
,'+@tablename+'
,'+@colname
--列印表名及欄位名
endfetch
next
from cur1 into
@schemasname,@tablename,@colname
endclose cur1 --
關閉游標
deallocate cur1 --
釋放游標
SQLServer還原全庫備份
查詢源庫匯出的全庫備份對應的資料檔案和日誌檔案的logicalname restore filelistonly from disk opt mssql full.bak 查詢新建的資料庫對應的資料檔案和日誌檔案 select a.name 邏輯檔名 case when charindex log ...
SQLServer跨庫查詢
用openrowset連線遠端sql或插入資料 如果只是臨時訪問,可以直接用openrowset 查詢示例 select from openrowset sqloledb sql伺服器名 使用者名稱 密碼 資料庫名.dbo.表名 在跨庫查詢時需要啟用ad hoc distributed querie...
sqlserver 多庫查詢
1,最近乙個專案使用sqlserver,使用sqlserver客戶端自帶得查詢工具,即選擇前1000行,生成得sql如下 select top 1000 from slt dbo lr base company 其中 slt是資料庫名,dbo是表示資料庫得表管理物件,lr base company是...