[MSSQL] 授權-SQL Server Integration Services

2011 年 04 月 28 日

參考資料:
http://nickliao1.blogspot.com/2010/11/client-mssms-ssisdcom.html
http://support.microsoft.com/kb/940232/zh-tw
http://msdn.microsoft.com/zh-tw/library/ms141053.aspx

USE [master]
GO
CREATE LOGIN [STC\db_ssisadmin] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[繁體中文]
GO
USE [msdb]
GO
CREATE USER [STC\db_ssisadmin] FOR LOGIN [STC\db_ssisadmin]
GO
exec sp_addrolemember @rolename=’db_ssisadmin’, @membername=’STC\db_ssisadmin’
go

USE [master]
GO
CREATE LOGIN [STC\db_ssisltduser] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[繁體中文]
GO
USE [msdb]
GO
CREATE USER [STC\db_ssisltduser] FOR LOGIN [STC\db_ssisltduser]
GO
exec sp_addrolemember @rolename=’db_ssisltduser’, @membername=’STC\db_ssisltduser’
go

USE [master]
GO
CREATE LOGIN [STC\db_ssisoperator] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[繁體中文]
GO
USE [msdb]
GO
CREATE USER [STC\db_ssisoperator] FOR LOGIN [STC\db_ssisoperator]
GO
exec sp_addrolemember @rolename=’db_ssisoperator’, @membername=’STC\db_ssisoperator’
go

廣告

[MSSQL] 授權-SQL Server Profiler

2011 年 04 月 28 日

參考資料: http://msdn.microsoft.com/zh-tw/library/ms187611.aspx

USE [master] 

GO
CREATE LOGIN [STC\SQLProfilerTrace] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[繁體中文]
GO
GRANT ALTER TRACE TO [STC\SQLProfilerTrace]
GO

[MSSQL] 授權-SQL Server Agent Job

2011 年 04 月 28 日

參考資料: http://technet.microsoft.com/zh-tw/library/ms188283.aspx

USE [master] 

GO
CREATE LOGIN [STC\SQLAgentOperatorRole] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[繁體中文]
GO
USE [msdb]
GO
CREATE USER [STC\SQLAgentOperatorRole] FOR LOGIN [STC\SQLAgentOperatorRole]
GO
exec sp_addrolemember @rolename='SQLAgentOperatorRole', @membername='STC\SQLAgentOperatorRole'
go

USE [master]
GO
CREATE LOGIN [STC\SQLAgentReaderRole] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[繁體中文]
GO
USE [msdb]
GO
CREATE USER [STC\SQLAgentReaderRole] FOR LOGIN [STC\SQLAgentReaderRole]
GO
exec sp_addrolemember @rolename='SQLAgentReaderRole', @membername='STC\SQLAgentReaderRole'
go

USE [master]
GO
CREATE LOGIN [STC\SQLAgentUserRole] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[繁體中文]
GO
USE [msdb]
GO
CREATE USER [STC\SQLAgentUserRole] FOR LOGIN [STC\SQLAgentUserRole]
GO
exec sp_addrolemember @rolename='SQLAgentUserRole', @membername='STC\SQLAgentUserRole'
go

大量部署UltraVNC

2010 年 11 月 12 日

什麼是大量部署?

就是同時在很多台電腦安裝軟體。而且安裝過程要自動,不用使用者去按[下一步]這種按鈕,什麼都不要做就安裝完成。

其實也不是什麼都不要做,而是事先都規劃設計好了。

什麼是UltraVNC?

一種遠端控制的軟體,可以讓你連到遠端的電腦。

可參考官網的說明。

為什麼要大量部署?

因為不想一台一台的裝。

在較多電腦的企業中,通常會有AD存在。利用AD提供的GPO這種 (危險的)功能,設定電腦在啟動時執行程式,開機後自動安裝程式,即可達到大量部署的目的。

為什麼要用UltraVNC?

因為通常會用到這個功能,是為了協助使用者處理問題,(因為不想走使用者的電腦那邊),所以要連到使用者的電腦上,檢視狀況及解決問題。

Windows有內建的遠端桌面可以使用,但若以此連線,遠端電腦的螢幕會被登出,這樣就看不到使用者發生問題當下的畫面。

Windows也有內建遠端協助功能,不過要由使用者主動操作,而不是每個人都會操作的。

所以預先在電腦上安裝UltraVNC,一旦使用者的電腦發生問題,打個電話到MIS部門,告知使用者自己電腦的IP位址(已預先設定為桌布背景),這樣MIS部門就可以連線到使用者的電腦,進行問題檢測與故障排除了。

另外,為了要和AD整合,使用AD帳號驗證(MSLogon2),所以捨棄Real VNC Free Edition等版本的VNC軟體。

ps. UltraVNC是Free的Open Source軟體。

如何自動安裝UltraVNC?

一般是透過GPO的軟體部署功能來安裝軟體,但是你必需要有MSI檔才行,很多軟體(例如:UltraVNC)的安裝程式是不提供MSI檔的。當然,還是有網路大善人教你怎麼把它打包成MSI檔,但個人使用後覺得還是有一些不習慣的地方,所以最後決定還是使用原生的功能,利用Logon Script的方式來進行安裝。

想要知道如何將UltraVNC打包成MSI檔,及如何利用GPO進行大量佈署的人,可以參考http://www.waynezim.com/2009/05/how-to-deploy-vnc-using-group-policy/的說明。

1. 下載UltraVNC的最新版。

例如:UltraVNC_1.0.8.2_Setup.exe。

如果你的作業系統是64位元的,則下載64位元的版本,例如:UltraVNC_1.0.8.2_x64_Setup.exe

2. 建立安裝選項檔,ultravnc.inf。

執行UltraVNC_1.0.8.2_Setup.exe /saveinf=ultravnc.inf,此時會進行安裝,並將安裝過程的選項記錄在ultravnc.inf檔案中。

image

image

image

image

image

image

image

image

image

image

image

image

image

ultravnc.inf的內容會長得像是…

[Setup]Lang=en
Dir=C:\Program Files\UltraVNC
Group=UltraVNC
NoIcons=0
SetupType=server
Components=ultravnc_server
Tasks=

因為是安裝在一般使用者的電腦上的,所以並沒有選擇安裝ultravnc_viewer

3. 產生設定檔。執行%ProgramFiles%\UltraVNC\uvnc_settings.exe以產生ultravnc.ini。

image
因為是要做AD整合驗證(使用AD的帳號來登入遠端使用者電腦的VNC),所以要勾選Require MS Logon及New MS Logon。

image
因為要能夠操作使用者的電腦,所以要把Disable Viewers inputs,不然就只能看不能動使用者的畫面了。

ultravnc.ini的內容長得像是…

[admin]
UseRegistry=0
MSLogonRequired=1
NewMSLogon=1
DebugMode=0
Avilog=0
path=C:\Program Files\UltraVNC
kickrdp=0
service_commandline=
DebugLevel=8
DisableTrayIcon=0
LoopbackOnly=0
UseDSMPlugin=0
AllowLoopback=0
AuthRequired=1
ConnectPriority=0
DSMPlugin=
AuthHosts=
AllowShutdown=1
AllowProperties=1
AllowEditClients=1
FileTransferEnabled=1
FTUserImpersonation=1
BlankMonitorEnabled=1
BlankInputsOnly=0
DefaultScale=1
CaptureAlphaBlending=0
BlackAlphaBlending=0
SocketConnect=1
HTTPConnect=1
XDMCPConnect=1
AutoPortSelect=1
PortNumber=0
HTTPPortNumber=0
IdleTimeout=0
RemoveWallpaper=0
RemoveAero=0
QuerySetting=0
QueryTimeout=0
QueryAccept=0
QueryIfNoLogon=0
primary=1
secundary=0
InputsEnabled=1
LockSetting=0
LocalInputsDisabled=0
EnableJapInput=0
FileTransferTimeout=30
[ultravnc]
passwd=000000000000000000
passwd2=000000000000000000
[poll]
TurboMode=0
PollUnderCursor=0
PollForeground=0
PollFullScreen=0
OnlyPollConsole=0
OnlyPollOnEvent=0
EnableDriver=0
EnableHook=0
EnableVirtual=0
SingleWindow=0
SingleWindowName=

4. 建立批次檔 Install.UltraVNC.cmd

@ECHO OFF

	SET SourceDir=\\starworld.com.tw\FS\軟體下載區\UltraVNC\UltraVNC 1.0.8.2

	SET MailFrom=Install.UltraVNC@%COMPUTERNAME%.%USERDNSDOMAIN%
	SET MailTo=Helpdesk@starworld.com.tw

:_Install

	reg.exe QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Ultravnc2_is1" >NUL 2>NUL
	IF NOT ERRORLEVEL 1 GOTO _End

	ECHO %date% %time% Begin Install

	if "%PROCESSOR_ARCHITECTURE%" == "x86" (
		ECHO %date% %time% Install %SourceDir%\UltraVNC_1.0.8.2_Setup.exe /silent /load="%SourceDir%\ultravnc.inf" /norestart
		"%SourceDir%\UltraVNC_1.0.8.2_Setup.exe" /silent /loadinf="%SourceDir%\ultravnc.inf" /norestart
	)

	if "%PROCESSOR_ARCHITECTURE%" == "AMD64" (
		ECHO %date% %time% Install %SourceDir%\UltraVNC_1.0.8.2_x64_Setup.exe /silent /loadinf="%SourceDir%\ultravnc.inf" /norestart
		"%SourceDir%\UltraVNC_1.0.8.2_x64_Setup.exe" /silent /loadinf="%SourceDir%\ultravnc.inf" /norestart
	)

	ECHO %date% %time% COPY "%SourceDir%\ultravnc.ini" "%ProgramFiles%\UltraVNC\ultravnc.ini" /Y
	COPY "%SourceDir%\ultravnc.ini" "%ProgramFiles%\UltraVNC\ultravnc.ini" /Y

	ECHO %date% %time% reg.exe ADD HKLM\SOFTWARE\ORL\WinVNC3\
	reg.exe ADD HKLM\SOFTWARE\ORL\WinVNC3\

	ECHO allow	0x00000003	BUILTIN\Administrators	> "%ProgramFiles%\UltraVNC\acl.txt"
	ECHO allow	0x00000003	"..\UltraVNC Helpers"	>> "%ProgramFiles%\UltraVNC\acl.txt"
	ECHO %date% %time% %ProgramFils%\UltraVNC\MSLogonACL.exe /i /o "%ProgramFiles%\UltraVNC\acl.txt"
	"%ProgramFiles%\UltraVNC\MSLogonACL.exe" /i /o "%ProgramFiles%\UltraVNC\acl.txt"

	ECHO %date% %time% "%ProgramFiles%\UltraVNC\winvnc.exe" -install
	"%ProgramFiles%\UltraVNC\winvnc.exe" -install

	ping.exe 127.0.0.1 -n 5 >NUL

	ECHO %date% %time% End Install

:_End

	ECHO %date% %time% Check "%ProgramFiles%\UltraVNC\winvnc.exe" Is Exist Or Not ?
	IF NOT EXIST "%ProgramFiles%\UltraVNC\winvnc.exe" (
		ECHO %date% %time% No
		SET MailMessage=%date% %time% %ProgramFiles%\UltraVNC\winvnc.exe Is Not Exist ***
		GOTO _SendMail
	) ELSE (
		ECHO %date% %time% Yes
	)

	ECHO %date% %time% Check UltraVNC Is Install Or Not ?
	reg.exe QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Ultravnc2_is1" >NUL
	IF ERRORLEVEL 1 (
		ECHO %date% %time% No
		SET MailMessage=%date% %time% UltraVNC Is Not Install Or Install Fail ***
		GOTO _SendMail
	ELSE
		ECHO %date% %time% Yes
	)

	ECHO %date% %time% Check winvnc.exe Is Running Or Not ?
	tasklist.exe /NH /SVC /FI "ImageName eq winvnc.exe" | find.exe /I "winvnc.exe"
	IF ERRORLEVEL 1 (
		ECHO %date% %time% No
		SET MailMessage=%date% %time% winvnc.exe Is Not Running ***
		GOTO _SendMail
	) ELSE (
		ECHO %date% %time% Yes
	)

	ECHO %date% %time% Check winvnc.exe Is Running As Service uvnc_service Or Not ?
	tasklist.exe /NH /SVC /FI "ImageName eq winvnc.exe" /FI "Services eq uvnc_service" 2>NUL | find.exe /I "uvnc_service" >NUL
	IF ERRORLEVEL 1 (
		ECHO %date% %time% No
		SET MailMessage=%date% %time% winvnc.exe Is Not Running As Service uvnc_service ***
		GOTO _SendMail
	) ELSE (
		ECHO %date% %time% Yes
	)

	GOTO _TheEnd

:_SendMail

	SET ScriptFile=%TEMP%\%RANDOM%.vbs
	
	ECHO Set objEmail = CreateObject( "CDO.Message" )	>> "%ScriptFile%"
	ECHO With objEmail					>> "%ScriptFile%"
	ECHO 	.From     = "%MailFrom%"			>> "%ScriptFile%"
	ECHO 	.To       = "%MailTo%"			>> "%ScriptFile%"
	ECHO 	.Subject  = "%MailMessage%"			>> "%ScriptFile%"
	ECHO 	.TEXTbody = "%MailMessage%"			>> "%ScriptFile%"
	ECHO 	.Send					>> "%ScriptFile%"
	ECHO End With					>> "%ScriptFile%"
	
	"%ScriptFile%" //T:5
	DEL "%ScriptFile%"

	GOTO _TheEnd

:_TheEnd

5. 將Install.UltraVNC.cmd、ultravnc.inf、ultravnc.ini放到\\starworld.com.tw\FS\檔案下載區\UltraVNC\下,然後在GPO設定Logon Script,設定開機時執行\\starworld.com.tw\FS\檔案下載區\UltraVNC\Install.UltraVNC.cmd

[未完,待續…]

搬家了

2010 年 11 月 12 日

從Live Space搬到Wordpres了.

其實也沒有常更新自己的部落格, 所以也沒有覺得什麼好不用的的. 而且用Live Space的話不用再多記一組帳密.

不過, Live Space不玩了, 只好搬到WordPress. 這個應該不會再倒了吧.

好用軟體: 自由門

2010 年 04 月 18 日
在大陸使用網路, 不能以常理度之. 一堆網站被封了.
 
facebook不能用, plurk不能用, 還有briian.com也不能用.
 
因為大陸有GFW在封鎖.
 
我使用了自由門軟體, 就可以連了.
 
 
1. 到自由門軟體的官網下載, http://us.dongtaiwang.com/?lang=cn, 不過, 這個網站在大陸也是被封的. 所以請在台灣先抓, 或請人下載後 mail 給你
2. 執行自由門軟體(目前最新版本是 6.89版), 會自動做一些設定
3. 把你要突破封鎖的程式放到Programs頁面中, 然後在這個頁面中去啟動程式. (你也可以設定IE的proxy, 但我不想改設定)
 
ps. 不確定經由FreeGate加密通道的資料會不會被竊取
ps. 不確定本來可以連的, 會不會因此變快
 

[SSRS] 訂閱報表後, 沒有資料時不發Mail

2009 年 11 月 26 日

需求:

SQL Server Reporting Service在訂閱報表後會定時產生報表, 並將報表Mail給指定的人員. 但是, 有時後報表查詢結果是沒有資料的 (資料庫內沒有資料). 此時會希望不要發Mail出來.

原理:

由於SQL Server Reporting Service並沒有查無資料時就不發Mail的選項, 所以它做的是定時產生報表(不管有沒有資料), 然後發Mail的指定人員. 所以就必需額外加工來處理.

方法一 (主要由AP人員自行處理):

自已寫個程式, 定時執行 (可使用Windows的排程), 先判斷有沒有資料, 如果沒有資料就結束. 如果有資料, 再呼叫報表程式來產生報表, 然後將報表Mail出去.

方法二(由AP人員與系統人員共同處理):

使用者(AP人員)在訂閱報表後, Reporting Service會在SQL Server的Job中產生一組亂數為名稱的Job, 內容是單純的一句 exec ReportServer2005.dbo.AddEvent @EventType=’TimedSubscription’, @EventData=’85889876-9ff8-49be-be93-fbc05dd34eec’ 的指令. 此時就可以在其前後加上條件判斷式來決定是否執行. 例如:

if exists ( select * from CarServer_DB..V_csvOrders_InvRemind )
begin
exec ReportServer2005.dbo.AddEvent @EventType=’TimedSubscription’, @EventData=’85889876-9ff8-49be-be93-fbc05dd34eec’
end

採用方法二有兩個問題.

1. 執行身份問題, 當執行此exec ReportServer2005.dbo….. 時, 是以SQL Server Reporting Service主機的Network Service (即電腦帳號) 身份執行, 所以可能對要判斷的資料庫表各沒有權限, 所以要記得做授權, 否則 if exists 會失敗

2. 訂閱問題. 當對報表重新訂閱時, 此Job會重置回原來的單一exec ReportServer2005.dbo…. 語法, 所以訂閱內容有改變時, 要再重新加上條件判斷式

3. 判斷問題, 由於Job是以亂數 (有點亂的數字), 所以你無法以 Job 名稱來判斷這到底是屬於哪一支報表的訂閱, 此時你可以用排程來判斷是否是你要執行的報表.

[MOSS2007] 如何設定搜尋

2009 年 11 月 10 日

 

參考資料:

http://support.microsoft.com/kb/946336/en-us

說明:

  1. 安裝Microsoft Filter Pack.
    http://www.microsoft.com/downloads/details.aspx?FamilyId=60C92A37-719C-4077-B5C6-CAC34F4227CC
  2. 在SharePoint Server 2007中增加檔案型態
    http://www.microsoft.com/downloads/details.aspx?FamilyId=60C92A37-719C-4077-B5C6-CAC34F4227CC
  3. 增加必要的登錄資訊
    在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\12.0\Search\Setup\ContentIndexCommon\Filters\Extension\增加機碼
    Key Value Already registered?
    .docx {5A98B233-3C59-4B31-944C-0E560D85E6C3} Yes
    .pptm {DDFE337F-4987-4EC8-BDE3-133FA63D5D85} Yes
    .pptx {DDFE337F-4987-4EC8-BDE3-133FA63D5D85} Yes
    .xlsm {F90DFE0C-CBDF-41FF-8598-EDD8F222A2C8} Yes
    .xlsx {F90DFE0C-CBDF-41FF-8598-EDD8F222A2C8} Yes
    .xlsb {312AB530-ECC9-496E-AE0E-C9E6C5392499} Yes
    .zip {20E823C2-62F3-4638-96BD-90F4F6784EBC} No
    .one {B8D12492-CE0F-40AD-83EA-099A03D493F1} No
    .vsd {FAEA5B46-761B-400E-B53E-E805A97A543E} No
    .vss {FAEA5B46-761B-400E-B53E-E805A97A543E} No
    .vst {FAEA5B46-761B-400E-B53E-E805A97A543E} No
    .vdx {FAEA5B46-761B-400E-B53E-E805A97A543E} No
    .vsx {FAEA5B46-761B-400E-B53E-E805A97A543E} No
    .vtx {FAEA5B46-761B-400E-B53E-E805A97A543E} No
  4. 重啟Office SharePoint Server Search
    net stop osearch
    net start osearch

[ORACLE] ORA-12542: TNS:address already in use

2009 年 10 月 26 日

 

ORA-12542:
    TNS:address already in use
Cause:
    Specified listener address is already being used.
Action:
    Start your listener with a unique address.

訊息:

ORA-12542: TNS:位址已使用

環境:

Windows Server 2003 + IIS + Oracle Database Server

狀況:

系統執行程式時出現TNS:位址已使用的訊息,但實際上並沒有其它的服務使用1521或1526埠
且此狀況在不做任何處理下就回復正常。

原因:

Oracle Client會透過TNS Client連到Database Server, 而作業系統會為Client連線動態配置連接埠 (MaxUserPort; Default=1024-5000)
而當連線結束時, 此連接埠會保留240秒 (TcpTimedWaitDelay; Default=240)
所以在短時間(240秒)內, 同時系統有大量連線時, 而超過可動態配置的連接埠的話, Windows 會沒有可用的連接埠可用, 因而造成此訊息.

處理:

    1. 增加可用的動態配置連接埠數
      1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 新增機碼
      2. Value Name: MaxUserPort
      3. Data Type: REG_DWORD
      4. Value: 65534
      5. Valid Range: 5000-65534 (decimal)
      6. Default: 0x1388 (5000 decimal)
    2. 減少連線結束時, 此連接埠的保留時間
      1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters新增機碼
      2. Value Name: TcpTimedWaitDelay
      3. Data Type: REG_DWORD
      4. Value: 60
      5. Valid Range: 30-300 (decimal)
      6. Default: 0xF0 (240 decimal)
    3. 減少動態連線的需求

參考資料:

http://forums.oracle.com/forums/thread.jspa?threadID=709714

Hello world!

2009 年 10 月 21 日

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!