2009年12月29日 星期二

http 方式連結 analysis server

連線到olap server 時,如果USER不加入DOMAIN,則無法連線.

在msdn看到文章說,可以透過http的方式來連線,這樣就不會受限於是否為DOMAIN USER.

這篇是說明AS2000的做法, 記得, sql 2000 要上service pack 3 以上.
Microsoft SQL Server 2000 Analysis Services 中增強的 Web 連線功能

按著文件建置後,連到網站http://localhost/olap/msolap.asp一直發生找不到這個頁面, 照文件的步驟該開的權限都開了,但還是找不出原因.
最後才發現, 原來是windows 2003 的 IIS 網頁延伸服務中,Active Server Pages的狀況為已禁止, 啟動後,就ok了. 也讓我花了半天的時間.
文件說,畫面為空白頁面表示連結成功.

接著, 更改程式中,olap的連線字串


"Data Source=http://SQL2000/OLAP/;Initial Catalog=TEST;Provider=MSOLAP.2"

測試程式, 連線成功....

這篇是說明SSAS20005的做法,
在 Microsoft Windows Server 2003 上設定 SQL Server 2005 Analysis Services 的 HTTP 存取
這個設定比2000簡單一些, 照著做, 很順利就連線成功了.

另外,寫了一個網頁,想要透過owc元件連結到analysis server 2005的cube進行瀏覽.有幾個額外步驟
1.client 機器要安裝owc元件,這個元件隨著office授權
2.要將網站加入信任網站,不然會出現無法跨網域存取的錯誤訊息
3.要安裝SQLServer2005_ASOLEDB9.msi, 這是最重要的一步.






2009年12月22日 星期二

insert into 還是 select into ?

Recovery mode is bulk logging.
If you are using the bulk-logged model, SELECT INTO will perform much better.

測試結果, INSERT INTO .. SELECT ..FROM ....
log快速的長大

2009年12月14日 星期一

sql server clr user defined functions

需要可以在sql server中直接批次更改使用者密碼的function

利用既有的加解密function,在visual studio新建一個database project ,稍微改一下function把他變成 Microsoft.SqlServer.Server.SqlFunction()

function 寫法可以參考 msdn上的範例

寫好後有二個方式可以放到sql server上
1.直接在vs project 中,按右鍵選 deploy, 會將有所有帶
Microsoft.SqlServer.Server.SqlFunction() 的function都部署到sql server, 這個方式比較適合開發測試用,按一下就可以直接用了.

2.把compile好的.dll檔 複製到sql server主機的任一路徑下,執行下列scripts.

--Step 1, congfigure database
USE [tempDB]
GO
sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO

--Step 2, drop depency objects
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[zfnEncryption]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [zfnEncryption]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[zfnDecryption]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [zfnDecryption]
GO

--Step 3. create assembly
IF EXISTS (SELECT * FROM sys.assemblies asms WHERE asms.name = N'sqlUtility')
DROP ASSEMBLY [sqlUtility]
GO
CREATE ASSEMBLY sqlUtility
FROM 'c:\test\sqlUtility.dll' -- depends on what server you are in
WITH PERMISSION_SET = safe
GO

--Step 4, create clr function
--Step 4.1, Encryption function
CREATE FUNCTION zfnEncryption(@pwd nvarchar(128))
returns nvarchar(128)
as EXTERNAL NAME [sqlUtility].[sqlUtility.UserDefinedFunctions].[Encryption]
GO

--Step 4.2, Decryption function
CREATE FUNCTION sr.zfnDecryption(@pwd nvarchar(128))
returns nvarchar(128)
as EXTERNAL NAME [sqlUtility].[sqlUtility.UserDefinedFunctions].[Decryption]

--Step 999, test function
select userid,dbo.zfnEncryption('prefix'+ userid) as encryptionPwd
from test

2009年12月9日 星期三

Request.ServerVariables["REMOTE_HOST"] 無法回傳機器名稱

在客戶的環境中, 有一段取client機器名稱的程式碼
Request.ServerVariables["REMOTE_HOST"] 一直無法取得機器名稱,只回傳ip address
但在自已的開發環境卻ok

看到這篇KB 297795

1.打開DOS命令提示字元
2. cd C:\Inetpub\Adminscripts.
3. set w3svc/EnableReverseDNS TRUE

設置了IIS 的EnableReverseDNS 後, 就OK了

KB里頭提到
Warnings
Enabling reverse DNS on your IIS server can affect the performance of your Web server and DNS servers. Some examples are:
Resources such as CPU utilization and network bandwidth may be taken up.
Client requests can take longer to process.
Client requests can be blocked if IP restrictions by DNS domain names are used.

這些警告.....待觀察啊

2009年12月6日 星期日

email html task

前輩都說, 輪子不要重覆造
想要一個ssis email html 內容的task,
codeplex上找到toddmcdermid寫的 task "Send HTML Mail Task"

有ssis2005及ssis2008的版本

我安裝了ssis2005, 裝完後, 在toolbox加入這個control flow task
點選編輯或f4時,出現以下這個錯誤

TITLE: Microsoft Visual Studio
------------------------------

The task with the name "Send HTML Mail Task" and the creation name "ToddMcDermid.SSIS.SendHTMLMailTask, SendHTMLMailTask90, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6c005605b216cf47" is not registered for use on this computer.
Contact Information:
Send HTML Mail Task

------------------------------
BUTTONS:

OK
------------------------------

看來是沒有註冊正確
利用GACUtil -i "C:\Program Files\Microsoft SQL Server\90\DTS\Tasks\SendHTMLMailTask90.dll"

要重開機嗎?
看來是要, 重開後...再編輯....ok

測試......body中文有問題.
加了 charset=big5 也沒用,看來要好好研究一下原作者的source code 了..
殘念........輪子是破的

回歸簡單,最後直接用 SmtpClient 自已寫吧, code很多, google 一下就有了

2009年12月1日 星期二

SSMS 文字編輯器使用Collapse & Expansion

SSMS Tools Pack 下載安裝檔
里有頭有一些功能, 在feature 頁可以看得到pack包含的所有功能說明

我主要是想要用Regions and Debug sections

希望在使用text editor 也能像visual studio一樣,可以collapse 和Expansion 程式碼

安裝完後, 這樣寫得"漏漏等"的scripts 就 以分段做收合囉.



SSMS 上的SVN 功能

公司用TortoiseSVN做版本控制,開發.NET專案時,安裝VISUALSVN,就可以在VISUAL STUDIO上直接進行UPGRADE,COMMIT,SHOW DIFF....等
但在SQL SERVER MANAGEMENT STUDIO(SSMS)上VISIUALSVN不起作用
GOOGLE一下,在網上看到一個覺得得聊勝於無的方法,
SQL Server Management Studio and TortoiseSVN

也是利用EXTERNAL TOOL的方式加自已的COMMAND

作法就和之前找到的 為你的SSMS專案排序吧 方法一樣

轉貼以下指令, 自已去COPY PASTE吧.

Title: SVN Commit
Command: C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe
Arguments: /Command:commit /path:"$(SolutionDir)
Initial directory: $(SolutionDir)

Title: SVN Update
Command: C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe
Arguments: /Command:update /path:"$(SolutionDir)"
Initial directory: $(SolutionDir)

Title: SVN Log (Solution)
Command: C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe
Arguments: /Command:log /path:"$(SolutionDir)"
Initial directory: $(SolutionDir)

Title: SVN Log (Current Item)
Command: C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe
Arguments: /Command:log /path:"$(ItemFileName)$(ItemExt)"
Initial directory: $(ItemDir)

Title: SVN Diff
Command: C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe
Arguments: /Command:diff /path:"$(ItemFileName)$(ItemExt)"
Initial directory: $(ItemDir)


publish error allowDefinition='MachineToApplication'

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