2011年1月13日 星期四

sp_MSforeachdb and sp_MsForEachTable

看到MSSQLTips 上這篇文章,

Making a more reliable and flexible sp_MSforeachdb

測試了一下發現挺實用,可以自由發揮

--instance中所有DB
exec sys.sp_MSforeachdb 'select ''?'' ' 


--instance中所有DB空間使用狀況
exec sys.sp_MSforeachdb'use ?; exec sp_spaceused'


--instance中所有DB訊息
exec master.sys.sp_MSforeachdb'use ?; exec sp_helpdb ? '

--目前DB中所有table訊息(含資料結構)
exec sys.sp_MsForEachTable 'sp_help ''?'' '


--目前DB中所有table筆數
exec sys.sp_MsForEachTable 'select ''?'', count(*) from ? '


其中傳入的變數 ?是否要當字串或欄位或物件,就依平常我們直接select 時的想法去想就可以明白了
要當字串,則前後加單引號, 要當物件則直接使用? 或[?] 都可以

2011年1月11日 星期二

DSOFramer @ windows 2008 R2 64bit

作業系統即將升級到Windows 2008 R2 + SQL 2005 64 bit + Office 2007 ,所以做了測試

網站上需要產生Excel檔,然後開啟做線上檢視

使用DSOFramer ActiveX元件是最方便的檢視元件


產生Excel是用Excel Application的方式實做,測試後發生太多奇奇怪怪的問題,大都是和Excel開檔的權限有關。
大家都覺得測的很煩了,所以請同事改用NPOI的方式重新撰寫這一段產生Excel套表的程式碼。

ps.使用NPOI時,若是office 2003則需要上到SP2以上,不然有時會無法在DSOFramer上開檔

完成後,終於可以順利產生Excel檔了,但用DSOFramer OpenWebDoc (open url doc)時,出現了這個錯誤訊息
The associated COM server does not support ActiveX Document embedding.

爬了文後,有人說在open時,要給定第三個參數 "Word.Document"

像這樣   open "http://test/xls/test.xls" , true, "Word.Document"

試了一下,結果改出現這個錯誤訊息
程序呼叫或引數不正確

然後開啟來的竟是word 的檔案轉換程式?

最後參考這篇文章,把參數改成 "Excel.Sheet"

Visual C++ ActiveX Control for hosting Office documents in Visual Basic or HTML


像這樣  open "http://test/xls/test.xls" , true, "Excel.Sheet"

然後就可以正常顯示了。LUCKY。。。

原來這是office 的program id表列如下,

 Excel Spreadsheet     "Excel.Sheet"    
  Excel Chart     "Excel.Chart"       
  PowerPoint Presentation   "PowerPoint.Show"  
  Project Database    "MSProject.Project" 
  Visio Drawing    "Visio.Drawing"   
  Word Document    "Word.Document"  

publish error allowDefinition='MachineToApplication'

一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...