July 10, 2015 at 8:51 am
Phil Parkin (7/10/2015)
OK, I roundly disagree with your absolute statement:
"Thus advocating the approach is improper."
Here is a part of a setup script I wrote recently. I developed it on one environment, then moved to QA, Prod etc.
--Verifications Framework
-------------------------
--Author:Phil Parkin
--Created:2015-06-03
--Script to be run on the ETL server
--*** Initial set-up only. Do not run when the live tables have been populated – the data would be deleted ***
--Config database
--__________________________________________________________________________________________________________________________________________
/*
--#region Create the SSISConnStringVariable table
use Config;
go
if object_id('cfg.SSISConnStringVariable', 'U') is not null
drop table cfg.SSISConnStringVariable;
create table cfg.SSISConnStringVariable
(
SSISConnStringVariableNameId int identity(1, 1)
not null
,SSISConnStringVariableName sysname not null
,SSISEnvironmentName sysname not null
,constraint PK_SSISConnStringVariable primary key clustered (SSISConnStringVariableNameId asc)
);
create unique index ix_SSISConnStringVariableName on cfg.SSISConnStringVariable(SSISConnStringVariableName);
--*/
--#endregion Create the SSISConnStringVariable table
--__________________________________________________________________________________________________________________________________________
On my system, with SSMSBoost (which supports collapsible regions) installed, I see this as follows:
So, when I am running the script in QA, for example, all I have to do is comment out the first /* to make this block 'active'.
Why is this such bad practice?
As opposed to simply setting a sentinel variable and having an IF statement that only runs that section of code if the sentinel value is true? I.e. IsInitialConfig = True/False
Or better yet, create/use an SSIS "install" package that is set only to do the initial config stuff on the first run.
Don't even get me started on using CLR code in T-SQL work...
July 10, 2015 at 9:24 am
Something similar can be done in PowerShell
Compare:
<# header
# comment
Write-Host "uncommented"
#>
Write-Host "outside of comment"
with
#<# header
# comment
Write-Host "uncommented"
#>
Write-Host "outside of comment"
July 10, 2015 at 9:42 am
No comment.
😉
July 10, 2015 at 10:31 am
I begin the block with [font="Courier New"]/*Dbg [/font]for debug code and [font="Courier New"]/*Rls[/font] for release code. That way I can search and replace [font="Courier New"]--/*Dbg [/font]with [font="Courier New"]/*Dbg [/font]to disable all the debug code at once and vice versa to enable.
July 10, 2015 at 10:49 am
GoofyGuy (7/10/2015)
No comment.😉
#<#
# no comment ;-)
Write-Host "no comment"
#>
July 13, 2015 at 3:01 am
Thank you! great idea and very usefull 🙂
July 13, 2015 at 3:21 am
Thanks for the interesting post.
Genuine question to someone who uses this method frequently (without trying to sound argumentative):
Do you find this more useful than just highlighting the block and clicking the line comment/uncomment button? Or highlighting the block and pressing CTRL-K + CTRL-C or CTRL-K + CTRL-U?
July 13, 2015 at 4:25 am
Ross.M (7/13/2015)
Thanks for the interesting post.Genuine question to someone who uses this method frequently (without trying to sound argumentative):
Do you find this more useful than just highlighting the block and clicking the line comment/uncomment button? Or highlighting the block and pressing CTRL-K + CTRL-C or CTRL-K + CTRL-U?
Yes indeed.
Imagine this:
--DELETE X
--From X
--Where Id = 12
If you are working quickly, it is so very easy to miss the third line when selecting ... After pressing F5, the immediate sinking feeling is not good at all.
The absence of evidence is not evidence of absence.
Martin Rees
You can lead a horse to water, but a pencil must be lead.
Stan Laurel
July 13, 2015 at 7:29 am
I've accidentally left debug code in, only to have it discovered after it went to production (they can't test everything).
September 2, 2020 at 9:02 pm
This was removed by the editor as SPAM
Viewing 10 posts - 46 through 54 (of 54 total)
You must be logged in to reply to this topic. Login to reply