/*檢視表,預存程序內容*/
EXEC sp_helptext 'PDL_LotNumHis'
/*系統物件LIST*/
select * from sys.objects where name LIKE 'SA%' and type='U' order by name
/*資料表LIST*/
select name from sys.tables
/*檢視表LIST*/
select name from sys.views
/*TABLE欄位LIST*/
select cast(c.name as varchar(40)),convert(varchar(40),s.name),* from sys.columns c inner join sys.objects s on c.object_id=s.object_id
where s.name='UTA_MakStrList'
/*COLUMN欄位LIST*/
select c.name,s.name,* from sys.columns c inner join sys.objects s on c.object_id=s.object_id
where c.name='DpMethodName'
2009年4月14日 星期二
2009年4月8日 星期三
CURSOR/Simple
DECLARE curCur
READ_ONLY
FOR select name from sys.objects where type='U' and name like 'StknWIP%' order by name
declare @strsql nvarchar(300)
declare @objname varchar(40)
OPEN curCur
SET NOCOUNT ON
FETCH NEXT FROM curCur INTO @objname
WHILE (@@fetch_status =0)
BEGIN
set @strsql='select count(*) from '+@objname
-- PRINT 'add user defined code here'
-- eg.
PRINT @strsql
EXECUTE sp_executesql @strsql
FETCH NEXT FROM curCur INTO @objname
END
CLOSE curCur
DEALLOCATE curCur
SET NOCOUNT OFF
GO
READ_ONLY
FOR select name from sys.objects where type='U' and name like 'StknWIP%' order by name
declare @strsql nvarchar(300)
declare @objname varchar(40)
OPEN curCur
SET NOCOUNT ON
FETCH NEXT FROM curCur INTO @objname
WHILE (@@fetch_status =0)
BEGIN
set @strsql='select count(*) from '+@objname
-- PRINT 'add user defined code here'
-- eg.
PRINT @strsql
EXECUTE sp_executesql @strsql
FETCH NEXT FROM curCur INTO @objname
END
CLOSE curCur
DEALLOCATE curCur
SET NOCOUNT OFF
GO
SysColumn
select t1.name ColName,t2.name TableName from sys.columns t1 inner join sys.objects t2 on t1.object_id=t2.object_id where t1.name like 'ProcName%' ORDER BY t2.Name
CURSOR
DECLARE vend_cursor
FOR select name from sys.objects where name LIKE 'SA%' and type='U' order by name
declare @objname varchar(100)
DECLARE @SQLString nvarchar(500)
DECLARE @ParmDefinition nvarchar(500)
DECLARE @cntAffect int
OPEN vend_cursor
FETCH NEXT FROM vend_cursor into @objname
SET @SQLString = N'SELECT @cntAffectOut =count(*) from '+@objname
SET @ParmDefinition = N'@cntAffectOut int OUTPUT';
EXECUTE sp_executesql @SQLString, @ParmDefinition, @cntAffectOut=@cntAffect OUTPUT
IF @cntAffect>0
BEGIN
select @objname
SET @SQLString='select top 10 * from '+@objname
EXECUTE sp_executesql @SQLString
END
WHILE (@@FETCH_STATUS = 0)
BEGIN
FETCH NEXT FROM vend_cursor into @objname
SET @SQLString = N'SELECT @cntAffectOut =count(*) from '+@objname
SET @ParmDefinition = N'@cntAffectOut int OUTPUT';
EXECUTE sp_executesql @SQLString, @ParmDefinition, @cntAffectOut=@cntAffect OUTPUT
IF @cntAffect>0
BEGIN
select @objname
SET @SQLString='select top 10 * from '+@objname
EXECUTE sp_executesql @SQLString
END
END
CLOSE vend_cursor;
DEALLOCATE vend_cursor;
SET NOCOUNT OFF
FOR select name from sys.objects where name LIKE 'SA%' and type='U' order by name
declare @objname varchar(100)
DECLARE @SQLString nvarchar(500)
DECLARE @ParmDefinition nvarchar(500)
DECLARE @cntAffect int
OPEN vend_cursor
FETCH NEXT FROM vend_cursor into @objname
SET @SQLString = N'SELECT @cntAffectOut =count(*) from '+@objname
SET @ParmDefinition = N'@cntAffectOut int OUTPUT';
EXECUTE sp_executesql @SQLString, @ParmDefinition, @cntAffectOut=@cntAffect OUTPUT
IF @cntAffect>0
BEGIN
select @objname
SET @SQLString='select top 10 * from '+@objname
EXECUTE sp_executesql @SQLString
END
WHILE (@@FETCH_STATUS = 0)
BEGIN
FETCH NEXT FROM vend_cursor into @objname
SET @SQLString = N'SELECT @cntAffectOut =count(*) from '+@objname
SET @ParmDefinition = N'@cntAffectOut int OUTPUT';
EXECUTE sp_executesql @SQLString, @ParmDefinition, @cntAffectOut=@cntAffect OUTPUT
IF @cntAffect>0
BEGIN
select @objname
SET @SQLString='select top 10 * from '+@objname
EXECUTE sp_executesql @SQLString
END
END
CLOSE vend_cursor;
DEALLOCATE vend_cursor;
SET NOCOUNT OFF
AddLinkServer
USE master
--連到外部資料庫
EXEC sp_addlinkedserver @server='A07', @srvproduct='',
@provider='SQLOLEDB', @datasrc='A07'
--建立Login資料
EXEC sp_addlinkedsrvlogin 'G20', 'false', NULL, 'sa', 'sa'
--查詢已連結資料庫
EXEC sp_linkedservers
--刪除已連結資料庫
EXEC sp_dropserver ''HR'', 'droplogins'
--連到外部資料庫
EXEC sp_addlinkedserver @server='A07', @srvproduct='',
@provider='SQLOLEDB', @datasrc='A07'
--建立Login資料
EXEC sp_addlinkedsrvlogin 'G20', 'false', NULL, 'sa', 'sa'
--查詢已連結資料庫
EXEC sp_linkedservers
--刪除已連結資料庫
EXEC sp_dropserver ''HR'', 'droplogins'
2009年4月7日 星期二
Trigger 停用
alter table prodbasic disable trigger tu_prodbasic
apcb 08 9 0 SP3 ) APCB \CLORIS _08247 (621) APCB 00:01:12 0 個資料列
sp_who 621
spid ecid status loginame hostname blk dbname cmd request_ id
1 621 0 sleeping APCB \CLORIS _08247 G 102010020 695 APCB AWAITING COMMAND 0
kill 695
apcb 08 9 0 SP3 ) APCB \CLORIS _08247 (621) APCB 00:01:12 0 個資料列
sp_who 621
spid ecid status loginame hostname blk dbname cmd request_ id
1 621 0 sleeping APCB \CLORIS _08247 G 102010020 695 APCB AWAITING COMMAND 0
kill 695
2009年3月26日 星期四
如何由程式中去新增 ODBC 資料來源
如何由程式中去新增 ODBC 資料來源
ODBC ( Open Database Connectivity ) 為 開放式的資料連結介面
早期是資料庫連結的標準,應用的技術有ODBC API、ODBC Direct ..
或是使用 資料庫物件 透過ODBC Driver 去進行資料庫的存取。
而後,M$ 推OLEDB ,資料庫物件也由 ADO 進化到 ADO.Net。
但不變的是,從文字檔 txt、csv、html,試算表xls、wks,到檔案型的DB,
XBase 的 DBF、Access 的 MDB等,甚至是 SQL Server , Oracle 等
中大型的DBMS、RDBMS,各廠商依舊提供了該資料庫系統的原廠 ODBC 驅動程式。
也因此,時至今日,ODBC 依舊被廣泛的使用。
而底下將介紹 如何由程式中去進增一個 MDB 的 ODBC 資料來源
其他資料庫原理亦相同,依樣畫葫蘆即可。
<< VB.Net 寫法 >>
' 宣告變數
Dim Para(11), DSN, Driver As String
' 設定ODBC DSN 參數內容
Para(0) = "UID=admin"
Para(1) = "Database=C:\db1.mdb"
Para(2) = "UserCommitSync=Yes"
Para(3) = "Threads=3"
Para(4) = "SafeTransactions=0"
Para(5) = "PageTimeout=5"
Para(6) = "MaxScanRows=8"
Para(7) = "MaxBufferSize=2048"
Para(8) = "FIL=MS Access"
Para(9) = "DriverId=25"
Para(10) = "DefaultDir=C:\"
Para(11) = "DBQ=C:\db1.mdb"
' 使用者資料來源名稱
DSN = "MyDataSourceName"
' 驅動程式
Driver = "Microsoft Access Driver (*.mdb)"
' 建立DAO.DBEngine 物件 , 透過RegisterDatabase 方法新增一個ODBC 設定
CreateObject("DAO.DBEngine.36").RegisterDatabase(DSN, Driver, True, Join(Para, Chr(0)))
' DAO 物件: Microsoft DAO 3.6 Object Library ( dao360.dll )
================================================================
<< C# 寫法 >>
// Activator 成員: 包含本機或遠端建立物件型別的方法,或者取得對現有遠端物件的參考。
// Activator.CreateInstance 方法(Type) : 使用最符合指定參數的建構函式,建立指定型別的執行個體。
object dbe = Activator.CreateInstance(Type.GetTypeFromProgID("DAO.DBEngine.36"));
// Type.GetTypeFromProgID 方法: 取得與指定的程式識別項(ProgID) 關聯的型別;
// 如果在載入Type 時發生錯誤,則傳回null。
// DAO.DBEngine.36 為Microsoft DAO 3.6 Object Library ( dao360.dll )
// 宣告變數
string[] strPara = new string[13];
string strDSN;
string strDriver;
// 設定ODBC DSN 參數內容
strPara[1] = "UID=admin";
strPara[2] = "Database=C:\\db1.mdb";
strPara[3] = "UserCommitSync=Yes";
strPara[4] = "Threads=3";
strPara[5] = "SafeTransactions=0";
strPara[6] = "PageTimeout=5";
strPara[7] = "MaxScanRows=8";
strPara[8] = "MaxBufferSize=2048";
strPara[9] = "FIL=MS Access";
strPara[10] = "DriverId=25";
strPara[11] = "DefaultDir=C:\\";
strPara[12] = "DBQ=C:\\db1.mdb";
// 使用者資料來源名稱
strDSN = "MyDataSourceName";
// 驅動程式
strDriver = "Microsoft Access Driver (*.mdb)";
object[] p = new object[] { strDSN, strDriver, true, string.Join('\0'.ToString(), strPara, 1, 12) };
// Type.InvokeMember 方法
// Type.InvokeMember (String, BindingFlags, Binder, Object, Object[])
dbe.GetType().InvokeMember("RegisterDatabase", BindingFlags.InvokeMethod, null, dbe, p);
// 透過DAO.DBEngine 物件的RegisterDatabase 方法新增一個ODBC 設定
ODBC ( Open Database Connectivity ) 為 開放式的資料連結介面
早期是資料庫連結的標準,應用的技術有ODBC API、ODBC Direct ..
或是使用 資料庫物件 透過ODBC Driver 去進行資料庫的存取。
而後,M$ 推OLEDB ,資料庫物件也由 ADO 進化到 ADO.Net。
但不變的是,從文字檔 txt、csv、html,試算表xls、wks,到檔案型的DB,
XBase 的 DBF、Access 的 MDB等,甚至是 SQL Server , Oracle 等
中大型的DBMS、RDBMS,各廠商依舊提供了該資料庫系統的原廠 ODBC 驅動程式。
也因此,時至今日,ODBC 依舊被廣泛的使用。
而底下將介紹 如何由程式中去進增一個 MDB 的 ODBC 資料來源
其他資料庫原理亦相同,依樣畫葫蘆即可。
<< VB.Net 寫法 >>
' 宣告變數
Dim Para(11), DSN, Driver As String
' 設定ODBC DSN 參數內容
Para(0) = "UID=admin"
Para(1) = "Database=C:\db1.mdb"
Para(2) = "UserCommitSync=Yes"
Para(3) = "Threads=3"
Para(4) = "SafeTransactions=0"
Para(5) = "PageTimeout=5"
Para(6) = "MaxScanRows=8"
Para(7) = "MaxBufferSize=2048"
Para(8) = "FIL=MS Access"
Para(9) = "DriverId=25"
Para(10) = "DefaultDir=C:\"
Para(11) = "DBQ=C:\db1.mdb"
' 使用者資料來源名稱
DSN = "MyDataSourceName"
' 驅動程式
Driver = "Microsoft Access Driver (*.mdb)"
' 建立DAO.DBEngine 物件 , 透過RegisterDatabase 方法新增一個ODBC 設定
CreateObject("DAO.DBEngine.36").RegisterDatabase(DSN, Driver, True, Join(Para, Chr(0)))
' DAO 物件: Microsoft DAO 3.6 Object Library ( dao360.dll )
================================================================
<< C# 寫法 >>
// Activator 成員: 包含本機或遠端建立物件型別的方法,或者取得對現有遠端物件的參考。
// Activator.CreateInstance 方法(Type) : 使用最符合指定參數的建構函式,建立指定型別的執行個體。
object dbe = Activator.CreateInstance(Type.GetTypeFromProgID("DAO.DBEngine.36"));
// Type.GetTypeFromProgID 方法: 取得與指定的程式識別項(ProgID) 關聯的型別;
// 如果在載入Type 時發生錯誤,則傳回null。
// DAO.DBEngine.36 為Microsoft DAO 3.6 Object Library ( dao360.dll )
// 宣告變數
string[] strPara = new string[13];
string strDSN;
string strDriver;
// 設定ODBC DSN 參數內容
strPara[1] = "UID=admin";
strPara[2] = "Database=C:\\db1.mdb";
strPara[3] = "UserCommitSync=Yes";
strPara[4] = "Threads=3";
strPara[5] = "SafeTransactions=0";
strPara[6] = "PageTimeout=5";
strPara[7] = "MaxScanRows=8";
strPara[8] = "MaxBufferSize=2048";
strPara[9] = "FIL=MS Access";
strPara[10] = "DriverId=25";
strPara[11] = "DefaultDir=C:\\";
strPara[12] = "DBQ=C:\\db1.mdb";
// 使用者資料來源名稱
strDSN = "MyDataSourceName";
// 驅動程式
strDriver = "Microsoft Access Driver (*.mdb)";
object[] p = new object[] { strDSN, strDriver, true, string.Join('\0'.ToString(), strPara, 1, 12) };
// Type.InvokeMember 方法
// Type.InvokeMember (String, BindingFlags, Binder, Object, Object[])
dbe.GetType().InvokeMember("RegisterDatabase", BindingFlags.InvokeMethod, null, dbe, p);
// 透過DAO.DBEngine 物件的RegisterDatabase 方法新增一個ODBC 設定
訂閱:
文章 (Atom)