This was part of the business continuity plan, so that HR had a list of employees next-of-kin etc, off-site.
I created a Job with 2 steps (Export using BCP and Import using AZCopy).
-- bcp.sql -- Create the command to be executed DECLARE @cmd VARCHAR(1000) = 'bcp SomeDatabase..SomeView out E:\SomePath\SomeFileName.txt -c -t, -T -S' + @@servername; -- Run this if command-prompt is disabled IF (SELECT value_in_use FROM sys.configurations WHERE name = 'xp_cmdshell') = 0 BEGIN EXEC sp_configure 'show advanced options', 1; RECONFIGURE; -- show advanced options EXEC sp_configure xp_cmdshell, 1; RECONFIGURE; -- enable command-shell EXEC xp_cmdshell @cmd; -- run the command EXEC sp_configure 'xp_cmdshell', 0; RECONFIGURE; -- disable command-shell EXEC sp_configure 'show advanced options', 0; RECONFIGURE; -- hide advanced options END; -- Run this if command-prompt is enabled ELSE EXEC xp_cmdshell @cmd;
Step-1 overwrites the file each time.
In preparation for the azcopy command I used Azure Explorer to connect and create a fileshare called “BCExtract”.
Right-Clicking on this I chose “Generate Shared Access Signature”, and “Ad hoc Shared Access Signature”. I left all the defaults as they were except I increased Expiry time a bit.
I pasted the “Shared Access Signature URI” into notepad, added a backslash, then the “Shared Access Signature Token” making one long string.
Before this string I added “azcopy copy ” then the local path to the CSV file in double quotes.
-- azcopy.sql -- Create the command to be executed DECLARE @cmd VARCHAR(1000) = 'azcopy copy "E:\SomePath\SomeFileName.txt" "https://SomeLocation/SomeSharedAccessToken"' -- Run this if command-prompt is disabled IF (SELECT value_in_use FROM sys.configurations WHERE name = 'xp_cmdshell') = 0 BEGIN EXEC sp_configure 'show advanced options', 1; RECONFIGURE; -- show advanced options EXEC sp_configure xp_cmdshell, 1; RECONFIGURE; -- enable command-shell EXEC xp_cmdshell @cmd; -- run the command EXEC sp_configure 'xp_cmdshell', 0; RECONFIGURE; -- disable command-shell EXEC sp_configure 'show advanced options', 0; RECONFIGURE; -- hide advanced options END; -- Run this if command-prompt is enabled ELSE EXEC xp_cmdshell @cmd;