Cloning VirtualBox Virtual Disk Images (vdi files)

I have recently starting using VirtualBox as my medium of virtualisation on my laptop and it works pretty well – I’ve even got Mac OSX working. But one thing I struggled with at first is the cloning of the VirtualBox Disk Images – the hard disk files that the Virtual Machines use. Once I had found out how to do this without encountering any errors I figured I would make a note of it so that I always have a referral point – and now so do you.

Copy/Paste Anyone?

No. That won’t work. Trust me I’ve tried…What you will end up with is two .vdi files with conflicting UUID’s. This means that you won’t be able to run them side by side, or indeed have them on the same physical machine.

Using the Command Line tool VBoxManage

You’re getting warmer now. This is the tool to use to clone your existing .vdi files. But you can’t simply bash out your script and expect it to work straight away. There’s a little bit of prep to do. So take note of the following steps and, if you follow them, you’ll have as many copies of your .vdi files as you want.

Assumptions:

  • VirtualBox is installed
  • You already have a base VM set up, complete with Virtual Hard Disk (vdi) – i.e. you have installed an OS

 

 

  1. Open VirtualBox
  2. Click on the Virtual Machine you want to clone
  3. Now click File>Virtual Media Manager image
  4. When the Virtual Machine Manager appears, click on the .vdi file that you want to clone and then click Release – this will release the .vdi from the VM. THIS IS IMPORTANT. If you miss this step you will encounter UUID conflicts. image
  5. Fire up command prompt (Start>Run>cmd [enter])
  6. Enter the following command:

< File path of VBoxManage> clonehd “<file path of the source .vdi file>” “<file path of the target (cloned) .vdi file>”

For me this command was:

“C:Program FilesOracleVirtualBoxVBoxManage” clonehd “D:Virtual MachinesVirtualBox VMsWindows7Windows7.vdi” “D:Virtual MachinesVirtualBox VMsWindows7SQLServer2005Windows7SQLServer2005.vdi”

If you see the following, your .vdi base file is being copied correctly. Check your target directory for the cloned .vdi file.

image

Once the clone is complete you should see the following:

image

The key thing to note in this screen is that a New UUID has been assigned to the cloned .vdi file. Remember, if you hadn’t released the base .vdi file from its VM, then you’ll get an error when executing the clonehd command – See step 5.

 

  1. Go Back to Virtual Box
  2. Click the New icon, to create a new VM
  3. Enter a Name for your new VM and select the Operating System that you’ll be using.
  4. Adjust the amount of memory that you need for the VM
  5. Now, on the Virtual Hard Disk screen select Use Existing Hard Disk.image
  6. Click on the folder icon and navigate to the .vdi file that you have just cloned and then click Next.
  7. Review the summary, then click the Finish button and you’re done. The new VM should now be available in your list of VMs

image

 

That’s it!

Set Parameter Defaults for Stored Procedures

Did you know that you can set defaults for your Stored Procedure parameters? No? Well, it turns out that you can. And it’s pretty straight forward too.

To set a default to a stored procedure parameter all you have to do is add “= <value>” when you declare your parameters in your CREATE PROCEDURE statement.

CREATE PROCEDURE usp_MyStoredProcedure (@Parameter1 DATE = GetDate(), @Parameter2 VARCHAR(10) = ‘MyValue’)

That’s it!

TSQL Tuesday #014 – Resolutions

It’s that time again. Time for another TSQL Tuesday and this round, brought to you by Jen McCowan (Blog | @MidnightDBA), is all about Resolutions. Since I’ve not mentioned T-SQL Tuesdays on this blog before here’s a quick rundown of what it’s all about, as described by its creator Adam Machanic (Blog | @AdamMachanic:

T-SQL Tuesday is the SQL Server blogosphere’s first recurring, revolving blog party. The idea is simple: Each month a blog will host the party, and about a week before the second Tuesday of the month a theme will be posted. Any blogger that wishes to participate is invited to write a post on the chosen topic. The event is called "T-SQL Tuesday", but any post that is related to both SQL Server and the theme is fair game. So feel free to post about SSIS, SSRS, Java integration, or whatever other technologies you’re working with in conjunction with SQL Server. Even if your post includes no T-SQL we still want to see it. 

Read more about T-SQL Tuesday…

image

This T-SQL Tuesday (and its particular topic) couldn’t have come at a better time. I have only just posted about activity on the blog. In it I mention that my next post will list my goals for 2011. So I guess I get a 2-for-1 with this post!

So what am I resolving to do, or do better (or not do) in 2011? Well, my theme for this year is ‘more’ (it’s also my 2 year old son’s favourite word. Well, that and a very emphatic NO!):

Blog ‘more’

In early 2010 I set myself the goal of blogging at least once a week. I started fairly well and even got to scheduling posts as opposed to just hitting ‘publish’ once I was happy with what I had written. But life happened. I got to working crazy hours for about 6 months and then moved our family from London, UK to Melbourne, Australia. This effectively put a damper on writing for me and I finished the year with a measly 21 posts for 2010.

While the above resolution does not have an actual figure committed to it, I definitely need to do better than 21! And I am already making progress. I have posts scheduled through to mid-March, so I have a better feeling about this one already.

Learn ‘more’

Since the middle of last year I have been meaning to take the MCITP exams (70-452 & 70-448). But since I failed to plan for them then, they are now a 2011 challenge. I’m resolving to get these ‘done and dusted’ in Q1, and I already have drawn up a schedule to get this done.

I also am resolving to learn more about the ‘soft skills’ so often overlooked by technical professionals, but so important to the successful outcome of a project. Communication (with clients, staff members & the SQL Community), personal effectiveness, strategic thinking, team building and problem solving are some of the areas I’ll be looking at building and fine tuning during the course of the year.

Project Management – a new area for me, but one that I am starting to get very interested in. I’ve seen first hand how NOT having the necessary PM skills can lead to a project being pulled. So I’m taking steps to ensure that it doesn’t happen to any project that I lead.

Attend ‘more’ SQL Server Events

2010 was a busy year. So my attendance at various events was sporadic to say the least. I did get to SQLBits V in 2009 (Post 1, Post 2, Recap 1, Recap 2), but missed out on attending either of the events in 2010. These are such great events and if you get the chance to go you shouldn’t hesitate – I believe that the next one is to be held in Brighton, on the South Coast of England.

imageSo this year I have diarised the Local User Group events and aim to attend each of them. On the conference side of things, I may have cheated a little, as just before the end of last year I confirmed my booking for the PASS Summit 2011!! I am properly stoked about this and will be doing as much as possible to ensure that my first Summit experience is a great one. Which leads me to my next resolution…


Interact ‘more’ with the SQL Community

Twitter, blogging, comments, forums, user groups, conferences, email, Skype, and of course, meeting more people. Since my days are pretty busy during ‘working hours’, I’m going to try setting aside some time before the day really begins to get back in touch with the SQL Server Pulse.

 

Sleep ‘less’

Something has to give. Always.

In order to achieve what I have set out here I need to give up on something that I hold dear. Precious sleep. I used to think know that I needed at least 9 hours sleep a night. Then I became a dad. Now I know that I will get by on 7 hours.  And when a new bundle of joy (in the form of a daughter) joins us in about 6 weeks, I’ll ‘know’ I can get by on less than 5.

 

I’m looking forward to a great year. A year of family expansion, personal growth and community involvement. What do you have lined up?

Blog Stats – 2010 in a nutshell

Now that 2010 is done and dusted, I figured it was time to have a look at how the blog has done over the last year.

Before I even had a look at any of the numbers I knew that there was one area that would be way below the level that I had hoped for. This number refers to the number of blog posts that I put out during the year. I had started the year with a view to post at least once a week – 52 blog posts. Well that didn’t happen… only a paltry 21 made it online last year. This needs to change this year.

Here’s a look at what took place:

 

Overall Stats
Blog Posts 21
Comments 216
Total Site Visits 34,618

 

Traffic Sources
Source Visits
Search Engines 28,880
Site Referrals 2950
Direct 2786
Other 82

 

Top Content
Blog Post Pageviews
The DatePart() Function in SSRS 5,540
The InScope() Function and the key to formatting subtotals in SSRS Matrix Objects 5,421
Custom Visibility Toggling in SSRS (2005) 4,967
Custom Visibility Toggling in SSRS 2008 2,819
Managing Reporting Services Layouts using the Rectangle in SSRS 2,778
The Join() Function in SSRS 2,415
The DateAdd() function in SSRS 1,908
The Choose() function in SSRS 1,614
Creating Subtotals in a Matrix in SSRS (2005/2008) 1,663
Homepage 1,536

 

Top 5 Locations
Country Visits
United States 15,380
United Kingdom 4,013
India 3,383
Canada 1,438
Australia 1,414

 

I’m pretty happy with these numbers and they certainly give me a benchmark for this year. If you have any feedback on these numbers let me know, I’m always interested to hear your views.

In my next post I’ll outline my goals for the blog and what I hope to achieve for 2011.

De-cluttering the SSIS Toolbox

If you are developing solutions in SSIS and are having to deal with limited screen real estate, here’s a really quick tip to de-clutter that SSIS toolbox and hide some of the Control/Data flow components that you don’t use.

With BIDS (that would be Business Intelligence Development Studio…) open and an SSIS project loaded, bring up the toolbox and right-click it. You will see the following menu:

image

Select the Choose Items… option. Now, click on the SSIS Control Flow Items tab and deselect all the components that you are not using.

image

Repeat the above step for the SSIS Data Flow Items and Maintenance Tasks tabs.

Click OK and you are all done. The components listed should now reflect just those that you will actually use and should mean less vertical scrolling.

Isn't that better...

 

But wait, there’s another option…

If you would prefer to have all your components immediately available, but still want to organise the toolbox, then follow these easy steps:

 

image

Right-click the toolbox and choose Add Tab. Give the Tab a nice descriptive name.

image

Now click on and drag into that group/tab all the components that you are not using regularly, or indeed the ones you are (if that’s what you would prefer).

All that’s left is to apply a Sort Items Alphabetically and collapse the groups you are not concerned with and you have a nice tidy toolbox.

 

Happy days!