Hi,
Here we'll cover below – 
-           Transact-SQL, an extension to the  SQL database programming language, is a powerful language offering many  features. 
-           Transact-SQL provides the SQL Server  developer with several useful functions, conditional processing methods,  advanced transaction control, exception and error handling, scrollable cursors,  and much more. 
Here we'll cover below –
-           Transact-  SQL Cursors
-           Extended  Properties - Incomplete
-           Create  a Script that Creates a Script 
-           sp_executesql
-           String  Concatenation
Transact-SQL Cursors
-           SQL Server is a set-processing  product, meaning that operations made against the database operate optimally  when performed against a set of results, rather than a single row.
-           Transact-SQL cursors allow you to  process and work with individual rows from a result set
-           Transact-SQL cursors can impact server performance  negatively by consuming resources, such as memory, excessively. 
-           Cursors should only be used if a  set-processing alternative cannot be used in their place. 
-           Used wisely, cursors can be quite  useful; on the other hand, using cursors indiscriminately can have a severe  impact on performance.
-           The lifecycle of a Transact-SQL  cursor is as follows:
o          A cursor is defined in a SQL  statement that returns a valid result set. This result set is defined as either  updateable or read-only.
o          The cursor is then populated, after  which the rows can be fetched one  row at a time, or as  a block. 
o          The rows can be fetched forward or  backward within the result set (scrolling).
o          Depending on the cursor type, the  data can be modified  during the scrolling (forward or backward behavior) or read and used with other  operations.
o          After the cursor has been used, it  should be closed and de-allocated from memory.
|      Declare a    Cursor  |          DECLARE <cursor_name> CURSOR <LOCAL_or_GLOBAL> <FORWARD_ONLY_or_SCROLL> <STATIC_or_KEYSET_or_DYNAMIC_or_FAST_FORWARD> <READ_ONLY or SCROLL_LOCKS or OPTIMISTIC> <TYPE_WARNING> FOR <select_statement> <FOR UPDATE> <OF column_name_N…>  |          DECLARE spid_cursor CURSOR FORWARD_ONLY FOR SELECT spid FROM    master.dbo.sysprocesses  |    
|      Opening a Cursor  |          OPEN <optional_GLOBAL>    <cursor_name_or_cursor_variable_name>  |          OPEN spid_cursor  |    
|      Fetching a Cursor  |          FETCH <NEXT_or_PRIOR_or_FIRST_or_LAST_or_ABSOLUTE(n)_or_RELATIVE(n)> FROM <optional_GLOBAL>    <cursor_name_or_cursor_variable_name> INTO <@variable_1>,    <@variable_N…>  |          DECLARE @spid smallint FETCH    NEXT FROM    spid_cursor INTO    @spid PRINT 'Spid #: ' + STR(@spid) EXEC ('DBCC INPUTBUFFER (' +    @spid + ')') DECLARE @spid smallint IF @@cursor_rows > 0 BEGIN WHILE @@fetch_status = 0 BEGIN FETCH    NEXT FROM    spid_cursor INTO    @spid PRINT 'Spid #: ' + STR(@spid) EXEC ('DBCC INPUTBUFFER (' + @spid    + ')') END END  |    
|      Closing a Cursor  |          CLOSE <optional_GLOBAL>    <cursor_name_or_cursor_variable_name>  |          CLOSE spid_cursor  |    
Extended  Properties
-           This is about attaching properties to  database objects, and extended it to allow multiple user-defined extended  properties to be attached to various objects within the database.
-           Extended properties allow you to  add meta data about the database and database objects. 
-           The extended property is made up of  a name/value pair, where the value is a SQL_VARIANT data type, with up to 7500 bytes of data. 
-           Extended properties are not allowed  on system objects.
-           RoleModel -  sp_addextendedproperty  stored procedure. 
sp_addextendedproperty
<property_name>,
<property_value>,
<level_0_object_type>,
<level_0_object_name>,
<level_1_object_type>,
<level_1_object_name>,
<level_2_object_type>,
<level_2_object_name>
Create a Script that  Creates a Script
-           Used to create a Transact-SQL script  that has to be run against several objects within a database, or databases  within a SQL Server instance. 
-           One beneficial time-saving  technique involves using a SELECT query to write that script for you.
|      Script 1  |          SELECT 'ALTER DATABASE ' + name +    ' SET RECOVERY FULL' FROM master.dbo.sysdatabases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb') Output    –  ALTER DATABASE BookRepository SET    RECOVERY FULL ALTER DATABASE Northwind SET    RECOVERY FULL ALTER DATABASE pubs SET RECOVERY    FULL  |    
Use sp_executesql
-           Unlike stored procedures, regular  ad hoc SQL batches and statements usually cause SQL Server to generate a new  execution plan each time they are run. 
-           The only time an execution plan will  be reused for an ad hoc query is if there is an exact match to a previously  executed query. 
-           The sp_executesql stored procedure  allows you to create and use a reusable execution plan, where the only items  that change are the query parameters. 
-           However, The sp_executesql is not a  magic bullet for all types of queries, so make sure to test all scenarios.
            
|      sp_executesql N'<@SQL_Statement_or_Batch>', N'<@Parameter_Name_1> <Datatype_1>', N'<@Parameter_Name_N> <Datatype_N>'  |          EXEC sp_executesql    N'Select * From MyTable Where    name = @name',   N'@name varchar(20)',   @name = 'John'  |    
|      |          |    
String Concatenation
-           String concatenation is the process  of attaching two or more characters, binaries, or columns into one expression using  the plus sign (+). 
-           Concatenation with a NULL value  will return a NULL value (and not a concatenated value), unless SET CONCAT_NULL_YIELDS_NULL OFF  is configured.
PRINT 'Fun ' +  'with' + ' concatenation!'
Thanks & Regards,
Arun  Manglick || Tech Lead 
No comments:
Post a Comment