Giter Club home page Giter Club logo

sqlservertoazure's Introduction

SQL Server to Azure

Microsoft SQL Server CLR Azure Methods

license

Introduction

With the advent of Microsoft SQL Server 2012 SP1 CU2 Microsoft allows you to leverage many Windows Azure storage features right from SQL Server (such as backup/restore off an Azure blob). With Microsoft SQL Server 2014 it will be possible to place datafiles and transaction logs directly in the Windows Azure containers as blobs. Many of those features, however, may require you to leave SSMS and resort to other means in order to control the Windows Azure platform.

Why SQL Server?

There are many libraries for Azure interaction. C#, PowerShell and so on. But what about SQL Server and its T-SQL? Since SQL Server 2014 the integration with Azure is good enough to warrant a dedicated library.

  • Do you want to enumerate your blobs? Query the relevant table!
  • Do you need to import/export from Azure tables in your SQL Server Database? Use a simple SELECT INTO!
  • Need to push events to an Azure Queue? Call a simple stored procedure!

Examples

For example, as detailed in this Igor Pagliai’s post (http://blogs.msdn.com/b/igorpag/archive/2013/10/23/create-a-sql-server-2014-database-directly-on-azure-blob-storage-with-sqlxi.aspx), you cannot break blob leases using SQL Server. With this CLR library, all you have to do is to call the right stored procedure:

EXEC [Azure].BreakBlobLeaseImmediately  
	'AccountName',
	'SharedKey',
	1,
	'ContainerName',
	'BlobName'

And you are ready to go :).

As another example, with this code you enumerate all your containers:

SELECT * FROM  [Azure].ListContainers(
	'AccountName', 
	'SharedKey', 
	1, 
	NULL);			

Each container can be enumerated too:

SELECT * FROM  [Azure].ListBlobs(
	'AccountName', 
        'SharedKey', 
	1, 
	'ContainerName',		
	1,						
	1,						
	1,				
	1,						
	NULL);				

More examples here: TechNet Blogs: Italian Premier Center for SQL Server or in my MSDN blog http://blogs.msdn.com/b/frcogno.

Feel free to contribute with ideas! :)

About the Windows Azure REST API from SQLCLR

This library will allow you to work with blobs, tables and queues, to handle ACLs and metadata.

I recently had a session at SQLRally Amsterdam about this topic, as soon as the video becomes available I will add it here.

Right now it supports:

There are still missing functionality. For example the Put block list functionality is not implemented yet.

Note that the library target is framework 4.5 so it will work out of the box with Microsoft SQL Server 2012/2014. If you need to use it with any previous SQL Server version you might need to recompile it.

How to try it

In a nutshell, all you have to do is:

  1. Download/clone the code and compile it.
  2. Put the DLLs into a convenient location (ie reachable from Microsoft SQL Server).
  3. Run the following script but make sure to replace the parameters first (ie with CTRL-Shift-M in SSMS).
  4. Map the SQLCLR functions/SPs to the corresponding T-SQL ones. For that, you can use the Creation.sql script shipped with the library.
CREATE ASYMMETRIC KEY ['<asymmetric_key_name, sysname, SampleAzureKey>'] FROM EXECUTABLE FILE = '<full_file_path, nvarchar(4000), Enter the full DLL path>'
CREATE LOGIN ['<asymmetric_login_name, sysname, SampleAzureLogin>'] FROM ASYMMETRIC KEY ['<asymmetric_key_name, sysname, SampleAzureKey>'];

GRANT EXTERNAL ACCESS ASSEMBLY TO ['<asymmetric_login_name, sysname, SampleAzureLogin>'];
GO

CREATE ASSEMBLY [ITPCfSQL.Azure.CLR] FROM '<full_file_path, nvarchar(4000), Enter the full DLL path>'
WITH PERMISSION_SET=EXTERNAL_ACCESS;
GO

License

Please see LICENSE file.

Happy Coding, Francesco Cogno.

sqlservertoazure's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.