Effects of sp_rename on Stored Procedures

There comes a time when mistakes are made.  Sometimes those mistakes can be as annoying as a spelling mistake during the creation of a stored procedure.  When a mistake such as that happens, we are given a few choices.  One could either rename the stored procedure, drop and recreate the stored procedure or simply leave the mistake alone.

When choosing to rename the stored procedure, one may quickly reach for the stored procedure that can be readily used for renaming various objects.  That procedure was provided by Microsoft after-all and is named sp_rename.  Reaching for that tool however might be a mistake.  Here is what is documented about the use of sp_rename to rename a stored procedure.  That documentation can be read at this link on MSDN.

We recommend you do not use this statement to rename stored procedures, triggers, user-defined functions, or views; instead, drop the object and re-create it with the new name.

And later in the same documentation, one can read the following.

Renaming a stored procedure, function, view, or trigger will not change the name of the corresponding object name in the definition column of the sys.sql_modules catalog view. Therefore, we recommend that sp_rename not be used to rename these object types. Instead, drop and re-create the object with its new name.

Now, a chief complaint against dropping and recreating the stored procedure, as recommended, is that process can cause permissions issues.  I am less concerned about the permissions issues and see that as more of a nuisance that is easily overcome due to great documentation and a few quick script executions to restore the permissions.  Despite that, I think we might have a means to address the rename and permissions issue that will be shared later in this article.

Using sp_rename

When using sp_rename, it would be good to understand what happens and what one might expect to see.  Let’s use the following script to create a stored procedure to step through an exercise to rename a stored procedure and evaluate the results.

When I execute that series of batches, I will get an output that matches the following.

renameme

 

When looking at the results we can see that the use of sp_rename does indeed change the name of the stored procedure as it is represented via sys.objects and metadata.  We can also see that the definition of the stored procedure does not change as it is held within the metadata.

If I choose to check the definition through the use of OBJECT_DEFINITION()  instead of sys.sql_modules, you will be pleased to know that sys.sql_modules calls OBJECT_DEFINITION() to produce the definition that is seen in the catalog view.

Well, that does pose a potential problem.  We see that the object definition is unchanged and may report the name as being different than what the object name truly is.  What happens if I execute the stored procedure?  Better yet, if I can execute the stored procedure and then capture the sql text associated to that plan, what would I see?

Yes!  The renamed stored procedure does indeed execute properly.  I even get three results back for that execution.  Better yet, I get an execution plan which I can pull a plan_hash from in order to evaluate the sql text associated to the plan.  In case you are wondering, the execution plan does contain the statement text of the procedure.  But for this case, I want to look at the entire definition associated to the plan rather than the text stored in the plan.  In this particular scenario, I only see the body of the procedure and not the create statement that is held in metadata.

plan

For this particular execution and plan, I can see a plan_hash of 0xE701AFB2D865FA71.  I can now take this and provide it to the following query to find the full proc definition from metadata.

And after executing that query, I can see results similar to the following.

execplancache_text

 

Now is that because in some way the query that was just run was also running OBJECT_DEFINITION()?  Let’s look at the execution plan for both OBJECT_DEFINITION() and the query that was just run.

obj_def_plan

 

Looking at the XML for that particular plan and we see xml supporting that plan.  There is no further function callout and the plan is extremely simple.

Now looking at the plan for the query involving the query_plan_hash we will see the following.

fngetsql

 

Looking at this graphical plan, we can see that we are calling FNGETSQL.  Looking at the XML for this plan, we can verify that FNGETSQL is the only function call to retrieve the full sql text associated to this plan execution.  FNGETSQL is an internal function for SQL server used to build internal tables that might be used by various DMOs.  You can read just a bit more about that here.

What now?

After all of that, it really looks pessimistic for sp_rename.  The procedure renames but does not properly handle metadata and stored procedure definitions.  So does that mean we are stuck with drop and create as the Microsoft documentation suggests?

If you have access to the full procedure definition you could issue an alter statement.  In the little example that I have been using, I could issue the following statement.

After executing that script, I could check sys.sql_modules once again and find a more desirable result.

And my results…

finallymatching

 

If you don’t have the text to create the proc, you could use SSMS to script it out for you.  It is as simple as right-clicking the proc in question, selecting modify and then executing the script.  It should script at with the correct proc name (the beauty of SMO) and then you can get the metadata all up to snuff in your database.

Of course, if you prefer, you could just drop and recreate the procedure.  Then reapply all of the pertinent permissions.  That is pretty straight forward too.

SQL Server UG in Vegas August 2014 Meeting

Comments: No Comments
Published on: August 13, 2014

evite

 

Another Great meeting and topic is coming to the folks in Las Vegas.  This month we have had the luck of finding Mike Fal (blog | twitter) step up and fill our speaker void.

Yes, it happens to be the second Thursday of the month already.  Being that time of month, the SQL Server UG of Las Vegas will be meeting at the Tahitti Village Resort and Spa to take in some great info on SQL Server and Powershell.

You can read the information about the meeting on our Meetup page here.  Or you can continue reading here.

Improving Database Restores with Powershell

Database restores are a key function of any database administrator’s job. However, it can be an extremely time consuming task to sort through your backups, find the right files, and then get your database up and running. In an emergency this will have a disastrous impact on your Recovery Time Objective(RTO) and lead to the dreaded angry-CTO-in-your-cube effect. By leveraging some easy-to-use Powershell scripts, you can avoid the second disaster and the pain that comes with it. By attending this session, you will understand how you can use the Powershell automation framework for database restores, see scripts that will let you restore faster, and learn techniques to extend these tools for migrating data and testing backups.

Michael Fal  

Mike Fal is a musician turned SQL Server DBA, with 10+ years of experience as a database administrator. He has worked for several different industries, including healthcare, software development, marketing, and manufacturing and has experience supporting databases from 1 GB to 4 TB in size. Mike received his a Bachelor’s Degree from the University of Colorado at Boulder in 1996 and has been caught playing trombone in public on more than one occasion.

LiveMeeting Info

Attendee URL:https://www.livemeeting.com/cc/UserGroups/join?id=4RD8NP&role=attend

Meeting ID: 4RD8NP

Whether you are in Vegas or you are somewhere else, you are welcome to join us.  We hope to see you Thursday evening.

T-SQL Tuesday #57 – SQL Family and Community

Comments: 1 Comment
Published on: August 12, 2014

TSQL2sDay150x150Look at that, it is once again that time of the month that has come to be known as TSQL Tuesday.  TSQL Tuesday is a recurring blog party that occurs on the second Tuesday (most generally) of the month.  This event was the brainchild of Adam Machanic (Blog | Twitter).  

Anybody who desires to participate in this blog party is welcome to join.  Coincidentally, that open invitation is at the base of this months topic – Family and Community.  The invitation, issued by Jeffrey Verheul (blog | twitter), for this month said the following.

This month I would like to give everyone the opportunity to write about SQL Family. The first time I heard of SQL Family, was on Twitter where someone mentioned this. At first I didn’t know what to think about this. I wasn’t really active in the community, and I thought it was a little weird. They were just people you meet on the internet, and might meet in person at a conference some day. But I couldn’t be more wrong about that!

Once you start visiting events, forums, or any other involvement with the community, you’ll see I was totally wrong. I want to hear those stories. How do you feel about SQL Family? Did they help you, or did you help someone in the SQL Family? I would love to hear the stories of support, how it helped you grow and evolve, or how you would explain SQL Family to your friends and family (which I find hard). Just write about whatever topic you want, as long as it’s related to SQL Family or community.

What is it?

We have all likely seen SQL Family thrown about here and there.  But what exactly is this notion we hear about so often?

I think we have a good idea about what family might be.  I think we might even have a good idea of what a friend is.  Lastly, I might propose that we know what a community is.  When we talk of this thing called SQL Family, I like to think that it is a combination of family, friends and community.

mushroom

These are people that can come together and talk about various different things that span far beyond SQL Server.  We may only see each other at events every now and then.  Those events can be anything from a User Group meeting to a large conference or even at a road race (5k, half marathon, marathon).

These are the people that are willing to help where help is needed or wanted.  That help can be anything ranging from well wishes and prayers, to teaching about SQL Server, to lending a vehicle, or anything along that spectrum.

I have seen this community go out of their way to help provide a lift to a hotel or to the airport.  These people will help with lodging in various circumstances when/if they can.  These are the people that have been known to make visits to hospitals to give well wishes for other people in the community.

Isn’t that what friends / family really boils down to?  People that can talk to each other on an array of topics?  People that go out of their way to help?  Think about it for a minute or three.

Virtual Box is TOO Small

Comments: No Comments
Published on: August 5, 2014

I have been working on upgrading my laptop.  Since my laptop housed a bunch of my virtual machines for various presentations and labs, that means also upgrading and/or converting my virtual machines.

The new laptop is Windows 8.1.  With the new laptop I was interested in converting a bunch of my Virtual Box machines to Hyper-V machines.  That desire was put on hold after discovering that I needed to first convert the virtual disks and then import them.  That wasn’t what put me off to it for awhile though.

The fact that I had to install Virtual Box on the new laptop to do the conversion made it less desirable. You see, in order to make Virtual Box work, I had to uninstall Hyper-V from Windows 8.1 because HV disables settings that are required by Virtual Box to work.  Jumping through those hoops just makes me less inclined to hurry and try the conversion to Hyper-V.  Maybe someday down the road.

That said, with the new laptop supporting a resolution of 3200 x 1800, I found that my virtual machines started displaying extremely tiny resolutions.  No matter how I scaled the machine, the internal machine resolution was remaining tiny.

Come to find out, the virtual machine was using the 3200 x 1800 resolution of the host despite setting the virtual machine (internally) to resolution settings as low as 640 x 480 (which just produced a small window on the desktop).  In the settings for Virtual Box, I could not find a means to override that behavior.

What I did find though was a setting in the Windows 8.1 host control panel that affected the virtual machine size.  In the Display control panel there is a setting  saying “Let me choose one scaling level for all my displays”. That seems to help with this scaling issue.

As it appears, many applications automatically adjust the scaling on such a high resolution device.  Virtual Box does not automatically scale and just adopts the host machine resolution.  In my case, it was also always adopting the host machine max resolution.

I changed that setting, adjusted my resolution to 1920 x 1080, and then also adjusted the scaling factor to 150%.  This fixed the issue with the excessively small screen on the virtual machines.  Sure, I could have continued to use the windows “+” combination to zoom in an out constantly, but that was more of a hassle than convenience.

We’ll just have to see how it goes for the time being.  Maybe in a few weeks when I have time to try the Hyper-V conversion again, I will be able to jump back to the higher resolution.  We’ll find out then if that scaling issue is an issue for Hyper-V just as it is for Virtual Box.

Presenting at PSSUG

Comments: No Comments
Published on: August 4, 2014

pssug

 

Coming up this week, I have been given the opportunity to do something I enjoy doing.  I have been invited to present to the folks in Philadelphia.

Sebastian Meine (blog | twitter) approached me during SQL Saturday in Philadelphia and I was happy to help where I could.

The topic for this presentation will be Extended Events.  We are going to try a slightly different approach, but here is what was posted in the meeting invite.

Jason Brimhall SQL 2012 Extended Events
Extended Events were introduced in SQL Server 2008. With each edition since, we have seen a significant upgrade to this feature. Join me for a little adventure into defining this thing called Extended Events. We will discuss how to use Extended Events to aid in performance tuning and in day to day administration. We will also explore some background and the architecture of Extended Events.
Jason Brimhall

Jason Brimhall

 

As a Microsoft Certified Master/Microsoft Certified Solutions Master, I have 19 years’ experience in the technology industry, including more than 10 with SQL Server. I also earned a Bachelor’s Degree in Business Information Systems from Utah State University. One of the highlights of my career was co-authoring SQL Server 2012 T-SQL Recipes: A Problem-Solution Approach .  I am a frequent presenter at SQL Server events worldwide, which includes SQLSaturdays and User Groups. I am also currently helping lead the Las Vegas SQL Users Group.

I am looking forward to this opportunity and to mingle with the group for a bit.  I hope to see you there.

Oh, and here is the link to the invite for the meeting.

Murder in Raleigh

sqlsat320_webI am about to set sail on a new venture with my next official whistle stop.  This year has been plenty full of whistle stops and I plan on continuing.  You can read (in full) about previous whistle stops and why they are called whistle stops here.

Suffice it to say at this point that it all started with a comment about a sailing train a few months back.

raleigh_traini

Time to sink or sail, so to speak.  SQL Saturday 320 in Raleigh will mark the next attempt at what I hope to be a repeat performance – many times.  I will be tag-teaming with Wayne Sheffield in this all day workshop event.  The session is one of two all day sessions for the event in Raleigh NC.

If you are a DBA or a database developer, this session is for you.  If you are managing a database and are experiencing performance issues, this session is a must.  We will chat with attendees about a horde of performance killers and other critical issues we have seen in our years working with SQL Server.  In short, some of these issues are pure murder on your database, DBA, developer and team in general.  We will work through many of these things and show some methods to achieve a higher state of database Zen.

Description

Join Microsoft Certified Masters, Wayne Sheffield and Jason Brimhall, as they examine numerous crazy implementations they have seen over the years, and how these implementations can be murder on SQL Server.  No topic is off limits as they cover the effects of these crazy implementations from performance to security, and how the “Default Blame Acceptors” (DBAs) can use alternatives to keep the developers, DBAs, bosses and even the end-users happy.

Presented by:

wayneWayne Sheffield, a Microsoft Certified Master in SQL Server, started working with xBase databases in the late 80′s. With over 20 years in IT, he has worked with SQL Server (since 6.5 in the late 90′s) in various dev/admin roles, with an emphasis in performance tuning. He is the author of several articles atwww.sqlservercentral.com, a co-author of SQL Server 2012 T-SQL Recipes, and enjoys sharing his knowledge by presenting at SQL PASS events and blogging at http://blog.waynesheffield.com/wayne

 

 

 

JasonBrimhall

Jason Brimhall has 10+ yrs experience and has worked with SQL Server from 6.5 through SQL 2012. He has experience in performance tuning, high transaction environments, as well as large environments.  Jason also has 18 years experience in IT working with the hardware, OS, network and even the plunger (ask him sometime about that). He is currently a Consultant and a Microsoft Certified Master(MCM). Jason is the VP of the Las Vegas User Group (SSSOLV).

 

 

 

 

Course Objectives

  1. Recognize practices that are performance pitfalls
  2. Learn how to Remedy the performance pitfalls
  3. Recognize practices that are security pitfalls
  4. Learn how to Remedy the security pitfalls
  5. Demos Demos Demos – scripts to demonstrate pitfalls and their remedies will be provided
  6. Have fun and discuss
  7. We might blow up a database

kaboom

 

There will be a nice mix of real world examples and some painfully contrived examples. All will have a good and useful point.

If you will be in the area, and you are looking for high quality content with a good mix of enjoyment, come and join us.  You can find registration information and event details at the Raleigh SQL Saturday site - here.  There are only 25 seats available for this murder mystery theater.  Reserve yours now.

The cost for the class is $110 (plus fees) up through the day of the event.  When you register, be sure to tell your coworkers and friends.

Wait, there’s more…

Not only will I be in Raleigh for this workshop, I hope to also be presenting as a part of the SQLSaturday event on Sep 6 2014 (the day after the workshop which is Sep 5, 2014).  I hope to update with the selected session(s) when that information becomes available.

You can see more details about the topics lined up for this event - here.

Shameless plug time

I present regularly at SQL Saturdays.  Wayne also presents regularly at SQL Saturdays.  If you are organizing an event and would like to fill some workshop sessions, please contact either Wayne, myself or both of us for this session.

Please open this page in the Admin panel only

Categories: Blogging, News, Professional, SSC
Comments: No Comments
Published on: July 30, 2014

I am taking a slight deviation from the usual type of posts that I share.  This time, I just want to share a quick and easy fix that I ran across due to a broken blog site that lasted for about a day starting on July 28th.

I didn’t even know there was a problem for a majority of the outage (ouch!).  And that just reinforced an age old requirement in IT.  If deploying a change – make sure to validate and test after the deployment.  Yes that was a bit embarrassing.  Despite that, there is something else to learn from the outage.

The issue started when updating a plugin called Google Analytics Dashboard.  The update was to go to version 2.1.  Upon completion of the update, all pages on my blog started posting a message that said the following.

Please open this page in the Admin panel only

That said, the root of the problem was related to the gad-admin-options.php file.  The file contained the following code.

There are several different means to fixing the problem.

  1. Disable/Delete the plugin.
  2. Comment out the code
  3. Update to 2.1.1 which was released on 7/30.

Options 1 and 3 are very easy.  Option 2 can be done via several methods.  If you have access to your admin page in wordpress, then you can edit the plugin file from the plugins page.  All you need to do is add a comment like in the following code snip.

If you don’t have access to your admin page, that’s ok.  You can still get to the file by connecting to your ftp and performing the same routine.  The file should be located in the following path.

wp-content/plugins/google-analytics-dashboard/gad-admin-options.php

See, real easy.  A little bit of a nuisance but it can be fixed quickly and easily.  Just keep in mind, when deploying a change, take the time to test and verify.  If something is not quite right, be prepared to rollback or find a fix.

Top 10 Recommended Books…

Comments: No Comments
Published on: July 29, 2014

So the title says it all, right?  Well, only really partially.

Recently an article was published listing the top 10 most recommended books for SQL Server.  That’s the part the title doesn’t say.  It is really important to understand that we are talking about the top 10 recommended books for SQL Server.

The beauty of the top 10 list is that I have a book on that list.  It caught me by surprise.  That is very cool.

If you are interested in finding a book, I recommend naturally that you check out my book.  But just as importantly have a look at the list.  This was a list that was published independently by SQL Magazine.  On the list you will find books by people like Kalen Delaney, Itzik Ben-Gan, and Grant Fritchey.

2012_Recipes

Check out the original list, here!

SSIS: Value does not Fall Within the Expected Range

Categories: News, Professional, SSC
Comments: No Comments
Published on: July 17, 2014

Every now and again I find myself working with SSIS for one reason or another.  Every now and again I find myself fighting with SSIS because it provides less than useful error messages.  This is one of those error messages that can be a pain until you understand what can be causing it.  Albeit, that doesn’t help resolve the problem with the error message or with its usefulness or the pain that it can/will cause you.

execute sql taskThe error message “Value does not Fall Within the Expected Range” is tied to the execute sql task that can be placed in the control flow.

Let’s assume we have such a task in our control flow as demonstrated by the attached image.  We’ll call the Execute SQL Task “Parse Client Code.”

Inside of this task, we will probably have something like what is seen in the next image.

parametermapping

Here we have attached parameters to the task and even assigned those parameters to “variable” names that we might use within the query.  In this case, we are just trying to parse a code from a filename that can be used in downstream processing.  The code might look like the following.

[codesyntax lang="tsql"]

[/codesyntax]

If I run that task at this point, I will get an error.  The error could be for any number of reasons based on the setup that I just showed.  The most common is that the Parameter Name is not really a name but really should be an ordinal position as to when the parameter is used in the script.  The ordinal position is 0 based.

The second issue is the data type that has been selected in error.  This should be a name and not a guid.  This means I should change the data type to the varchar type from the drop down that is available on the parameter screen under data type.

The next issues is the use of the variable name in the script itself.  One should use a ? instead of variable names.  So, this script should be fixed to look like the following.

[codesyntax lang="tsql"]

[/codesyntax]

And the parameter screen should be made to look like the following.

paramfixed

These quick fixes can eliminate or even prevent what might possibly be a headache when dealing with SSIS.

Now, what if you need to have more than one parameter for your query?  No problem.  The same principles apply.  Just map your parameters according to proper data type and to the ordinal position that the parameter needs to be used within the query and you should be all set.

Murder In Denver

Comments: 1 Comment
Published on: July 14, 2014

sqlsat331_webI am about to set sail on a new venture with my next official whistle stop.  This year has been plenty full of whistle stops and I plan on continuing.  You can read (in full) about previous whistle stops and why they are called whistle stops here.

Suffice it to say at this point that it all started with a comment about a sailing train a few months back.

train

Time to sink or sail, so to speak.  SQL Saturday 331 in Denver will mark the next attempt at what I hope to be a repeat performance – many times.  I will be tag-teaming with Wayne Sheffield in this all day pre-con / workshop event.  The session is one of three all day sessions for the event in Denver CO.

If you are a DBA or a database developer, this session is for you.  If you are managing a database and are experiencing performance issues, this session is a must.  We will chat with attendees about a horde of performance killers and other critical issues we have seen in our years working with SQL Server.  In short, some of these issues are pure murder on your database, DBA, developer and team in general.  We will work through many of these things and show some methods to achieve a higher state of database Zen.

Description

Join Microsoft Certified Masters, Wayne Sheffield and Jason Brimhall, as they examine numerous crazy implementations they have seen over the years, and how these implementations can be murder on SQL Server.  No topic is off limits as they cover the effects of these crazy implementations from performance to security, and how the “Default Blame Acceptors” (DBAs) can use alternatives to keep the developers, DBAs, bosses and even the end-users happy.

Presented by:

wayneWayne Sheffield, a Microsoft Certified Master in SQL Server, started working with xBase databases in the late 80′s. With over 20 years in IT, he has worked with SQL Server (since 6.5 in the late 90′s) in various dev/admin roles, with an emphasis in performance tuning. He is the author of several articles atwww.sqlservercentral.com, a co-author of SQL Server 2012 T-SQL Recipes, and enjoys sharing his knowledge by presenting at SQL PASS events and blogging at http://blog.waynesheffield.com/wayne

 

 

 

JasonBrimhall

Jason Brimhall has 10+ yrs experience and has worked with SQL Server from 6.5 through SQL 2012. He has experience in performance tuning, high transaction environments, as well as large environments.  Jason also has 18 years experience in IT working with the hardware, OS, network and even the plunger (ask him sometime about that). He is currently a Consultant and a Microsoft Certified Master(MCM). Jason is the VP of the Las Vegas User Group (SSSOLV).

 

 

 

 

Course Objectives

  1. Recognize practices that are performance pitfalls
  2. Learn how to Remedy the performance pitfalls
  3. Recognize practices that are security pitfalls
  4. Learn how to Remedy the security pitfalls
  5. Demos Demos Demos – scripts to demonstrate pitfalls and their remedies will be provided
  6. Have fun and discuss
  7. We might blow up a database

kaboom

 

There will be a nice mix of real world examples and some painfully contrived examples. All will have a good and useful point.

If you will be in the area, and you are looking for high quality content with a good mix of enjoyment, come and join us.  You can find registration information and event details at the Denver SQL site - here.  There are only 30 seats available for this murder mystery theater.  Reserve yours now.

The cost for the class is $125 up through the day of the event.  When you register, be sure to choose Wayne’s class.

Wait, there’s more…

Not only will I be in Denver for the Precon, I hope to also be presenting as a part of the SQLSaturday event on Sep 20 2014 (the day after the precon which is Sep 19, 2014).  I hope to update with the selected session(s) when that information becomes available.

You can see more details about the topics lined up for this event - here.

Shameless plug time

I present regularly at SQL Saturdays.  Wayne also presents regularly at SQL Saturdays.  If you are organizing an event and would like to fill some pre-con sessions, please contact either Wayne, myself or both of us for this session.

«page 1 of 31




Calendar
September 2014
M T W T F S S
« Aug    
1234567
891011121314
15161718192021
22232425262728
2930  
Content
SQLHelp

SQLHelp


Welcome , today is Tuesday, September 2, 2014