Latest Event Updates
I use this to bounce against may weekly ETL’s to make sure that every day of the week data is captured. This helps me quickly identify a Calendar date with no ETL date which means no data was pulled.
DECLARE @start_date DATETIME= ‘2017-01-01’;
DECLARE @end_date DATETIME= GETDATE();
SELECT CAST(@start_date AS DATE) AS Calendar_Day
SELECT DATEADD(DAY, 1, Calendar_Day)
WHERE Calendar_Day < @end_date)
DATENAME(dw, Calendar_Day) AS Day_of_Week,
DATENAME(week, Calendar_Day) AS Week_Number
FROM CalendarDates OPTION(MAXRECURSION 0);
Here’s a great trick to find specific patterns for a column. The LIKE CLAUSE can be use as a RegEx
Here’s a link to LIKE from Microsoft.
Using Wildcard Characters As Literals
You can use the wildcard pattern matching characters as literal characters. To use a wildcard character as a literal character, enclose the wildcard character in brackets. The following table shows several examples of using the LIKE keyword and the [ ] wildcard characters.
|LIKE ‘[a-cdf]’||a, b, c, d, or f|
|LIKE ‘[-acdf]’||-, a, c, d, or f|
|LIKE ‘[ [ ]’||[|
|LIKE ‘abc[_]d%’||abc_d and abc_de|
|LIKE ‘abc[def]’||abcd, abce, and abcf|
In this example, I want to find all user names that starts with the letter “S” and is follow by numbers 0-9.
Here’s a simple query to directly SELECT a Text File.
HDR = Header Row. If YES, that means your first row is a header.
FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’, ‘Text;Database=E:\;HDR=YES’, ‘SELECT * FROM Log.txt’)
If you need the Microsfot ACE OLEDB 12 driver, please refer to Microsoft Jet OLEDB 12
You’re probably getting this error message in BIDS/Data Tools
Error 1 Validation error. Data Flow Task: Package1: The requested OLE DB provider Microsoft.Jet.OLEDB.12.0 is not registered. If the 32-bit driver is not installed, run the package in 64-bit mode. Error code: 0x00000000. An OLE DB record is available. Source: “Microsoft OLE DB Service Components” Hresult: 0x80040154 Description: “Class not registered”. Package1.dtsx 0 0
The issue here is that your computer is 64 bit and both versions (32 bit and 64 bit) of Excel are installed. By installing Microsoft Access Database Engine 2010 Redistributable your issue should go away but this alone did not work for me.
What worked for me is to also install 2007 Office System Driver: Data Connectivity Components which corrected the Microsoft.Jet.OLEDB.12.0 issue.
File Type (extension) Extended Properties
Excel 97-2003 Workbook (.xls) “Excel 8.0”
Excel 2007 Workbook (.xlsx) “Excel 12.0 Xml”
Excel 2007 Macro-enabled workbook (.xlsm) “Excel 12.0 Macro”
Excel 2007 Non-XML binary workbook (.xlsb) “Excel 12.0”
I hope this helps solve your issue.
What’s wrong with using SQL Server Management Studio (SSMS)? Nothing! What’s wrong with you! Well, I’m in a hurry.
As much as I love GNR Patience, I don’t have any… well not so much of it. Thanks Smart Phone era.
I always use SQLCMD when SSIS is not available– not all of my customers install SSIS along with SQL. I once had a project where I had to scan through terabytes of files to find certain image files. Once the files were found, it would immediately write the path to the database. Since this had to be performed and completed over the weekend, I ran hundreds instances of my C# application to seek out the files.
So here’s how it works
In the command prompt (cmd.exe), run sqlcmd /? and you’ll see the following
There’s a lot of options and the ones I frequently use are
-S Server Name
-E Trusted Connection
I hope this gives you some insight as to why/when you would use SQLCMD
If you’ve ever wrote reports that requires comparing numbers from previous weeks, months, quarter, and year SQL 2012 and later versions will solve your issue.
In this example, I have a table call HBClaimsRemits_DL_NW. Everyweek I bring in new data into this table. However, I would like to see if the data grew or shrank.
To do this, we use LAG and LEAD. Both of these functions requires that we use PARTITION so that we’re getting the LAG and LEAD data for the specific group of data.
LAG gets the data from the previous record. If no previous record exists, a NULL value will return.
LEAD gets the next row data. If no future record exits, a NULL value will return
Here is the script to show Previous (LAG) and Future (LEAD) records.
RecordCount AS Current_Record_Count,
ISNULL(LAG(RecordCount) OVER (PARTITION BY Name ORDER BY CreateDate), 0) AS Previous_Record_Count,
ISNULL(LEAD(RecordCount) OVER (PARTITION BY Name ORDER BY CreateDate), 0) AS Next_Record_Count,
I like to simplify the results to something more of an Indicator (KPI).
Here is the script with an Indicator field. There’s more scripting involved but the end results is easier to read.
WHEN ISNULL(LAG(RecordCount) OVER (PARTITION BY Name ORDER BY CreateDate), 0) = 0 THEN ‘No Changes’
WHEN RecordCount ISNULL(LAG(RecordCount) OVER (PARTITION BY Name ORDER BY CreateDate), 0)
THEN ‘Up by ‘ + CAST(FORMAT(RecordCount – ISNULL(LAG(RecordCount) OVER (PARTITION BY Name ORDER BY CreateDate), 0), ‘##,###’) AS VARCHAR(20))
END AS Indicator,