如果忘記某個欄位是屬於哪個table的話可以使用
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = '欄位名稱';
===table===
select *
FROM INFORMATION_SCHEMA.TABLES
2010年9月10日 星期五
SQL Server複寫
適用對象:Microsoft SQL 2000 Server
準備動作
1. 所有 SQL Server 註冊名稱不得為 local
2. Master 新增一個權限足以讓「服務登入」的使用者帳號,將「SQLSERVERAGENT」服務的登入方式改成剛剛設定的帳號登入,並且將服務啟動測試結果。
3. Master 建立一個讓訂閱者“可讀寫”的網路資源分享
4. 欲使用複寫的資料表需設定「主索引鍵」
5. 複寫雙方需具備相同資料庫,資料表以及資料可由複寫重新初始化
===========
實際設定步驟
我使用的方式主要操作都在發行者端,目前看來有些問題,實際狀況則需觀察。
1. 工具 → 複寫 → 「設定發行、訂閱者及散發」
2. 設定為自身散發者 → 將 SQL Server 代理程式設定自動啟動 → 填寫快照路徑為動作三的 UNC 路徑 → 使用預設值完成
3. 工具 → 複寫 → 建立和管理發行集 → 選擇資料庫 → 選擇欲使用的發行集類型 → 選擇訂閱者的身份 → 勾選需要即時同步的資料表 → 設定發行集名稱 → 完成
4. Master 需可登入 Slave 網路上的芳鄰,要不然下一步會失敗。
5. 將複寫的對象新增至「SQL Server 註冊」
6. 工具 → 複寫 → 建立和管理發行集 → 選擇資料表 → 屬性與訂閱 → 訂閱 → 發送新增 → 選擇訂閱者 → 設定訂閱資料庫名稱 → 設定更新頻率 → 選擇「初始化設定」→ 完成
==========
檢查以及偵錯
複寫監視器 → 發行者 → 發行集 →
==========
注意事項
1. 使用此方式設定之同步複寫,Slave 恆為 Slave 端。萬一 Master 端故障 Slave 接手後,如 Master 要重回復寫設定,請將先 Slave 複製一份到 Master,再從 Master 端重新設定一次同步複寫即可。
http://www.hoyo.idv.tw/hoyoweb/document/hoyo/12
適用對象:Microsoft SQL 2005 Server
若要在安裝 SQL Server 的新執行個體時安裝複寫 若要安裝複寫元件,
包括 Replication Management Objects (RMO) 在內,請在安裝精靈
的 [要安裝的元件] 頁面上選取 [SQL Server Database Services]。
若要在修改 SQL Server 的現有執行個體時安裝複寫 若要安裝複寫
元件: 在 SQL Server 安裝精靈的 [要安裝的元件] 頁面上,按一下
[進階]。 在 [功能選擇] 頁面上,展開 [資料庫服務]。 按一下 [複寫],
再按一下 [整個功能將會安裝至本機硬碟]。 若要安裝
Replication Management Objects (RMO): 在 SQL Server 安裝
精靈的 [要安裝的元件] 頁面上,按一下 [進階]。 在 [功能選擇] 頁
面上,展開 [用戶端元件]。 按一下 [軟體開發套件],再按一下
[整個功能將會安裝至本機硬碟]。
http://msdn.microsoft.com/zh-tw/library/ms143677(SQL.90).aspx
適用對象:Microsoft SQL 2008 Server
http://msdn.microsoft.com/zh-tw/library/ms151160.aspx
http://msdn.microsoft.com/zh-tw/library/ms151192.aspx
http://msdn.microsoft.com/zh-tw/library/ms151781.aspx
準備動作
1. 所有 SQL Server 註冊名稱不得為 local
2. Master 新增一個權限足以讓「服務登入」的使用者帳號,將「SQLSERVERAGENT」服務的登入方式改成剛剛設定的帳號登入,並且將服務啟動測試結果。
3. Master 建立一個讓訂閱者“可讀寫”的網路資源分享
4. 欲使用複寫的資料表需設定「主索引鍵」
5. 複寫雙方需具備相同資料庫,資料表以及資料可由複寫重新初始化
===========
實際設定步驟
我使用的方式主要操作都在發行者端,目前看來有些問題,實際狀況則需觀察。
1. 工具 → 複寫 → 「設定發行、訂閱者及散發」
2. 設定為自身散發者 → 將 SQL Server 代理程式設定自動啟動 → 填寫快照路徑為動作三的 UNC 路徑 → 使用預設值完成
3. 工具 → 複寫 → 建立和管理發行集 → 選擇資料庫 → 選擇欲使用的發行集類型 → 選擇訂閱者的身份 → 勾選需要即時同步的資料表 → 設定發行集名稱 → 完成
4. Master 需可登入 Slave 網路上的芳鄰,要不然下一步會失敗。
5. 將複寫的對象新增至「SQL Server 註冊」
6. 工具 → 複寫 → 建立和管理發行集 → 選擇資料表 → 屬性與訂閱 → 訂閱 → 發送新增 → 選擇訂閱者 → 設定訂閱資料庫名稱 → 設定更新頻率 → 選擇「初始化設定」→ 完成
==========
檢查以及偵錯
複寫監視器 → 發行者 → 發行集 →
==========
注意事項
1. 使用此方式設定之同步複寫,Slave 恆為 Slave 端。萬一 Master 端故障 Slave 接手後,如 Master 要重回復寫設定,請將先 Slave 複製一份到 Master,再從 Master 端重新設定一次同步複寫即可。
http://www.hoyo.idv.tw/hoyoweb/document/hoyo/12
適用對象:Microsoft SQL 2005 Server
若要在安裝 SQL Server 的新執行個體時安裝複寫 若要安裝複寫元件,
包括 Replication Management Objects (RMO) 在內,請在安裝精靈
的 [要安裝的元件] 頁面上選取 [SQL Server Database Services]。
若要在修改 SQL Server 的現有執行個體時安裝複寫 若要安裝複寫
元件: 在 SQL Server 安裝精靈的 [要安裝的元件] 頁面上,按一下
[進階]。 在 [功能選擇] 頁面上,展開 [資料庫服務]。 按一下 [複寫],
再按一下 [整個功能將會安裝至本機硬碟]。 若要安裝
Replication Management Objects (RMO): 在 SQL Server 安裝
精靈的 [要安裝的元件] 頁面上,按一下 [進階]。 在 [功能選擇] 頁
面上,展開 [用戶端元件]。 按一下 [軟體開發套件],再按一下
[整個功能將會安裝至本機硬碟]。
http://msdn.microsoft.com/zh-tw/library/ms143677(SQL.90).aspx
適用對象:Microsoft SQL 2008 Server
http://msdn.microsoft.com/zh-tw/library/ms151160.aspx
http://msdn.microsoft.com/zh-tw/library/ms151192.aspx
http://msdn.microsoft.com/zh-tw/library/ms151781.aspx
IREPORT
設定當頁數等於1時才列印
Print When expression
new Boolean($V{PAGE_NUMBER}.intValue() == 1)
new java.lang.Float( ($V{SUM_TA018_C_1}.floatValue()) /($V{SUM_TB005_C_1}.floatValue()) )
如下面僅僅是兩個數相加
(new BigDecimal( Double.parseDouble($V{SUM_week_1_6} +"") +Double.parseDouble($V
{SUM_week_2_4}+"") ))
這個是Boolean判斷式的寫法
new Boolean($V{REPORT_COUNT}.intValue() % 2 == 0)
new Boolean( $F{SEX}.equals("1"))
這是if 判斷的寫法
$F{quantity} == null ? "No data" : String.valueOf($F{quantity})
Remove line when blank
移除空白行
Print When expression
new Boolean($V{PAGE_NUMBER}.intValue() == 1)
new java.lang.Float( ($V{SUM_TA018_C_1}.floatValue()) /($V{SUM_TB005_C_1}.floatValue()) )
如下面僅僅是兩個數相加
(new BigDecimal( Double.parseDouble($V{SUM_week_1_6} +"") +Double.parseDouble($V
{SUM_week_2_4}+"") ))
這個是Boolean判斷式的寫法
new Boolean($V{REPORT_COUNT}.intValue() % 2 == 0)
new Boolean( $F{SEX}.equals("1"))
這是if 判斷的寫法
$F{quantity} == null ? "No data" : String.valueOf($F{quantity})
Remove line when blank
移除空白行
SQL Server 「逾時過期」的處理方式
SQL Server 「逾時過期」的處理方式
基本上 SQL Server 只要在處理大量資料的指令,如 INSERT INTO A SELECT * FROM B 在資料量很大的時候,很容易發生 Timeout ,也就是常見的「逾期過時」錯誤。
SQL Server 本機用 Enterprise Manager 執行的話還好處理,只要更改設定值就好了。(工具->選項->進階,加大逾時秒數)。
但是絕大部份都是在 Remote 下 SQL Command ,只要量稍大,這種「逾期過時」出現的機率也隨之增加。
解決的方式最好是加大 SQL Server Remote Command 的 Timeout 時間,只要在 SQL Queryer 裡面下:
USE master
GO
EXEC sp_configure 'remote query timeout', 6000
GO
RECONFIGURE
GO
6000 代表的是秒數,也就是 6000 秒(SQL Server預設是 600 秒,)。
另一種就是用外部程式來處理,但是可能還是會受限於 SQL Server 的限制,尤其 ADODB 在這部份還有嚴重的Bug,詳見:
PRB: CommandTimeout Does Not Inherit From Connection Timeout
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q195489
程式設定 CommandTimeout 處理的範例:
Dim conn As New ADODB.Connection
conn.Open(ConnStr)
conn.CommandTimeout = 600 '秒
conn.Execute("INSERT INTO A SELECT * FROM B")
conn.Close()
conn = Nothing
需注意的是在 ADODB 2.6 以前,CommandTimeout 不可以設為 0 (無限制時間),非不得以要使用的話,必須使用 ADODB.Command,詳見:
FIX:使用 Connection 物件時的 CommandTimout 屬性問題
http://support.microsoft.com/default.aspx?scid=kb;zh-tw;175264
資料來源:http://blog.robbin0919.com/2008/03/sql-server.html
真是個好物…
趕快收藏…XD
基本上 SQL Server 只要在處理大量資料的指令,如 INSERT INTO A SELECT * FROM B 在資料量很大的時候,很容易發生 Timeout ,也就是常見的「逾期過時」錯誤。
SQL Server 本機用 Enterprise Manager 執行的話還好處理,只要更改設定值就好了。(工具->選項->進階,加大逾時秒數)。
但是絕大部份都是在 Remote 下 SQL Command ,只要量稍大,這種「逾期過時」出現的機率也隨之增加。
解決的方式最好是加大 SQL Server Remote Command 的 Timeout 時間,只要在 SQL Queryer 裡面下:
USE master
GO
EXEC sp_configure 'remote query timeout', 6000
GO
RECONFIGURE
GO
6000 代表的是秒數,也就是 6000 秒(SQL Server預設是 600 秒,)。
另一種就是用外部程式來處理,但是可能還是會受限於 SQL Server 的限制,尤其 ADODB 在這部份還有嚴重的Bug,詳見:
PRB: CommandTimeout Does Not Inherit From Connection Timeout
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q195489
程式設定 CommandTimeout 處理的範例:
Dim conn As New ADODB.Connection
conn.Open(ConnStr)
conn.CommandTimeout = 600 '秒
conn.Execute("INSERT INTO A SELECT * FROM B")
conn.Close()
conn = Nothing
需注意的是在 ADODB 2.6 以前,CommandTimeout 不可以設為 0 (無限制時間),非不得以要使用的話,必須使用 ADODB.Command,詳見:
FIX:使用 Connection 物件時的 CommandTimout 屬性問題
http://support.microsoft.com/default.aspx?scid=kb;zh-tw;175264
資料來源:http://blog.robbin0919.com/2008/03/sql-server.html
真是個好物…
趕快收藏…XD
SQL 2000移轉至SQL 2005會出現的問題
將原本SQL 2000上的資料庫備份原還至SQL 2005上時,
卻出現無法刪掉該資料庫底下的舊使用者
錯誤訊息如下:
標題: Microsoft SQL Server Management Studio
------------------------------
使用者 'test' 的 卸除 失敗。 (Microsoft.SqlServer.Smo)
如需說明,請按一下: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=卸除+User&LinkId=20476
------------------------------
其他資訊:
執行 Transact-SQL 陳述式或批次時發生例外狀況。 (Microsoft.SqlServer.ConnectionInfo)
------------------------------
資料庫主體在資料庫中擁有 結構描述 且無法卸除。 (Microsoft SQL Server, 錯誤: 15138)
如需說明,請按一下: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.3042&EvtSrc=MSSQLServer&EvtID=15138&LinkId=20476
----------------------
處理方式如下:
1. 首先執行並登入SQL 2005的Microsoft SQL Server Management Studio
2. 展開test[資料庫]
3. 展開[安全性]
4. 展開[結構描述]
5. 刪除結構描述中的[test]
6. 再回到[使用者]
7. 即可刪除使用者中的[test]
----------------------
奇怪的地方就是,
沒辦法直接在使用者的介面,
就清除或變更結構描述。
真是不夠直覺式的介面…
這個問題已經卡了第三次,
備份一下,不然下次會再卡┬_┬。
卻出現無法刪掉該資料庫底下的舊使用者
錯誤訊息如下:
標題: Microsoft SQL Server Management Studio
------------------------------
使用者 'test' 的 卸除 失敗。 (Microsoft.SqlServer.Smo)
如需說明,請按一下: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=卸除+User&LinkId=20476
------------------------------
其他資訊:
執行 Transact-SQL 陳述式或批次時發生例外狀況。 (Microsoft.SqlServer.ConnectionInfo)
------------------------------
資料庫主體在資料庫中擁有 結構描述 且無法卸除。 (Microsoft SQL Server, 錯誤: 15138)
如需說明,請按一下: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.3042&EvtSrc=MSSQLServer&EvtID=15138&LinkId=20476
----------------------
處理方式如下:
1. 首先執行並登入SQL 2005的Microsoft SQL Server Management Studio
2. 展開test[資料庫]
3. 展開[安全性]
4. 展開[結構描述]
5. 刪除結構描述中的[test]
6. 再回到[使用者]
7. 即可刪除使用者中的[test]
----------------------
奇怪的地方就是,
沒辦法直接在使用者的介面,
就清除或變更結構描述。
真是不夠直覺式的介面…
這個問題已經卡了第三次,
備份一下,不然下次會再卡┬_┬。
SQL Server Native Client 10 ODBC won't load library on Windows 2000
SQL Server Native Client 10 ODBC won't load library on Windows 2000
Could not load the setup or translator library.
http://www.experts-exchange.com/Microsoft/Applications/Q_24084897.html
上面那個外國人跟我遇到一樣的問題,
中文的訊息會顯示:不在有可用的提供者,請確認提供者安裝正確。
結果發現微軟有這個
os版本表
可連接資料庫版本
資料來源:http://blogs.msdn.com/b/sqlnativeclient/archive/2008/02/27/microsoft-sql-server-native-client-and-microsoft-sql-server-2008-native-client.aspx
結論…
以目前來看,還沒新版的Sql Server上市前
SNAC9 相容性 >>>> SNAC10相容性
囧…
沒事不要灌太新。
Could not load the setup or translator library.
http://www.experts-exchange.com/Microsoft/Applications/Q_24084897.html
上面那個外國人跟我遇到一樣的問題,
中文的訊息會顯示:不在有可用的提供者,請確認提供者安裝正確。
結果發現微軟有這個
os版本表
SQL Server Native Client Version | Supported Operating Systems |
SQL Server Native Client (SNAC9) | Microsoft Windows 2000 Service Pack 4 or later Microsoft Windows Server 2003 or later Microsoft Windows XP Service Pack 1 or later Microsoft Windows Vista Microsoft Windows 2008 Server |
SQL Server 2008 Native Client (SNAC10) | Microsoft Windows Server 2003 SP1 or later Microsoft Windows XP Service Pack 2 or later Microsoft Windows Vista Microsoft Windows 2008 Server |
可連接資料庫版本
SQL Server Native Client Version | Supported SQL Server Versions |
SQL Server Native Client (SNAC9) | Microsoft SQL Server 7.0 Microsoft SQL Server 2000 Microsoft SQL Server 2005 Microsoft SQL Server 2008 Next SQL Server version |
SQL Server 2008 Native Client (SNAC10) | Microsoft SQL Server 2000 Microsoft SQL Server 2005 Microsoft SQL Server 2008 Next two SQL Server versions |
資料來源:http://blogs.msdn.com/b/sqlnativeclient/archive/2008/02/27/microsoft-sql-server-native-client-and-microsoft-sql-server-2008-native-client.aspx
結論…
以目前來看,還沒新版的Sql Server上市前
SNAC9 相容性 >>>> SNAC10相容性
囧…
沒事不要灌太新。
訂閱:
文章 (Atom)