I'm a systems programmer myself and completely new to DTS or any ETL etc. I have a situation here and would greatly appreciate your support.
we are using MS SQL 2000 till now in project and now efforts are on way to move to 2008.
I can see some .dts files which were created long back with MSSQL2000. VB script(.bas) files were generated from these .dts files and they are run in the VB program, till date.
Problem::
Now as we are moving to MS SQL 2008 ==>
I need to make sure that the VB program(generated from .dts files earlier) are good to be run and MAINTAINED even with MSSQL 2008 R2.
Question:
Firstly can these programs be maintained even in MSSQL2008 (without MSSQL2000) ?
If yes, do i need to any dll's or references etc?
I could see one of my team member migrating the .dts to .dtsx files, is there a way to generate VB files(.bas) from .dtsx ?
ETL solutions in SQL Server 2000 (DTS) and SQL Server 2008 (SSIS) are incompatible, but you could use Execute DTS task from SSIS package. You don't need any dll's for it.
That'll give you some time before you have a chance to rewrite your system. You'll have to do it eventually, because 'Execute DTS' is deprecated component and won't be supported in future versions.
Related
I have problem that is all my team members are altering the Sps and functions and
some conflicts occurred through the development
is there anyway or tool to store and get all version of them ?
the problem is before releasing the new version, i don't want a tool to compare difference between two databases like what Red gate SQL_Compare
thanks in advance
You may make use of the features in Visual Studio and TFS(or any other source control mechanisms). All that you need to do is to
Create a SQLServer DB Project in Visual studio and configure it to
your desired database.
Bind the project to a source control (TFS,
SVN etc.,)
Every time you have a change in DB, you can just compare the changes using .scmp file and click update.
You may refer this post for more information:
http://candordeveloper.com/2013/01/08/creating-a-sql-server-database-project-in-visual-studio-2012/
On my development box, I always run the latest version of SQL Server. I often deploy databases from my dev box to a live/staging area for review or testing. I've done this many times and it has always been a painful process, but I am realizing that I need to find an easier, more reliable and consistent way of performing this basic operation.
I normally use WebMatrix purely for deployment and it's worked fine, but I've been having problems getting it to work on my server for some reason. Consequently, I am seeking an alternative solution.
Creating a SQL dump file would probably work, but it's not an acceptable solution a database contains images and easily exceeds 2 gigs of data which would take forever.
The Import/Export utility fails due to issues with incomplete schema copies, identity inserts and checks. The solutions offered for these issues has failed to work in my particular case.
The Backup and Restore method also fails due to some strange incompatibilities between SQL Server 2008 and 2012. SQL Server 2008 Management Studio throws exceptions during the restore process of a 2012 database. It's odd that this happens, even though I set the compatibility of the database to version 2008.
I haven't tried the Detaching, copying and reattaching files method, but I haven't bothered trying since it would probably fail for the same reasons the backup and restore method did.
Are there other alternatives out there? Also, why is this so unbelievable hard for a task that is so common and important, especially in this day in age of 2013? Get real Microsoft!
We changed our method of deploying and moving databases between servers, instances and versions by adopting the tools from RedGate. They are expensive, but worth it IMHO.
My team creates scripts for ~everything.
Database Creation, Alter, Inserts, etc, etc.
And we write all scripts that check for the existence of things before trying to create them.
Aka, we can run the scripts over and over and get the same results.
And we deploy to different environments by using SqlCmd.exe.
EDIT
See:
http://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-views-stored-procedures-and-the-like.aspx
and
http://odetocode.com/blogs/scott/archive/2008/01/30/three-rules-for-database-work.aspx
=============
If that is "too much" then I agree with the other poster, RedGate is your friend.
Points below aside, have you considered the Database Projects within VS2012? they allow you to script off the tables, sp's, triggers, users etc you want, generate sql cmd scripts, make changes and schema compare and version control your database code, I'd certainly recommend it
"Creating a SQL dump file would probably work, but it's not an
acceptable solution a database contains images and easily exceeds 2
gigs of data which would take forever."
Why is this a problem? where are you transferring the file from and to and over what connection?
"The Backup and Restore method also fails due to some strange
incompatibilities between SQL 2008 and 2012. SQL 2008 Management
Studio throws exceptions during the restore process of a 2012
database. It's odd that this happens, even though I set the
compatibility of the database to version 2008"
This shouldn't be an issue if file is created in 2008 prior to restoring. If you create a new DB in your 2008 instance, then take a backup from that and restore it to a 2012 instance with 2008 compatiblity, then you should be able to use it there, back it up from the 2012 instance and restore to 2008 again afterwards.
I have an existing database (SQL Server 2008 R2), and my goal is to have a project that can install the same database as I already have.
i.e the project will read the schema and the data, and will be able to duplicate the existing data and schema.
This tool needs to save the database information to disk so I will able to install the database on different machines.
Can I do it with Visual studio 2010 database projects?
Is it a simple task?
(The reason I am asking is that I already have such a project that installs my database, but this tool is very old(~2000).
That old project is one big mess, it has C#, java, sql, batch files and some 3rd party tools and has many more capabilities than I need for my current product..)
Thanks.
Use SQL Server Management Objects (SMO) to create a snapshot of your source db and then restore it to the target server.
More on SMO here: http://msdn.microsoft.com/en-us/library/ms162169.aspx .
A nice tutorial here: http://www.codeproject.com/KB/database/SMO_Tutorial_1.aspx
The easiest way is to backup using SQL server management studio. Then move the backup file to the second server and there restore it with SQL server management studio. If you need SQL code to do it (instead of GUI way), just drop a comment...
This codeplex project has a basic library that does that if you like to roll your own and has two sample projects for migration/comparison tasks.
http://dbschemareader.codeplex.com/
Also the commercial option is to use Sql Redgate's tools. They are expensive but worth every penny if this is a mission critical database. On the otherhand, if you are just using a db as an alternative to a file, say in a embedded scenario, it might be hard to justify such an expensive tool.
Have you tried DBSourceTools ? http://dbsourcetools.codeplex.com
It is an open-source database versioning tool that will script out all database objects and data to disk, and then re-create the database on another machine.
It has all of the features that you are looking for.
I recently got a new primary computer. On my old one, I was working with MS Visual Studio 2008 (or maybe an older version - I can't remember now). I had managed to get SQLite working with it and was in the start/middle of building an application.
On the new computer, I now have MS Visual Studio 2010. I have had problems getting SQLite to work with it. Honestly, I haven't tried super hard yet, because I realized I pretty much want to completely redesign this application anyway and it got me thinking... do I really want to use SQLite or some other SQL? MS SQL (or is it called SQL Server)? MySQL?
My end goal is to have an application that can be installed by the user with one .msi file and the user should not have direct access to the database (although at this stage, that is a secondary concern).
It seems like MS SQL / SQL Server is the easiest since it's also an MS product.... Would love some opinions!
(along with the opinions, I'd also love to be pointed to current instructions... I'm a programmer, I'm not a "coding environment setup" person and have always struggled with this. All I want is to get in there and write my application!)
Thanks in advance!
-Adeena
PS... I'm currently working with C# and would prefer to stick with it, but could easily do this in C++ (I'm fluent in all the flavors of C) if that makes a difference with the database.
SQL Server would be a good choice by the sounds of what you're after. Try the express version - it's free, good for development and prototyping and integrates really well with Visual Studio.
The SQL Server Management Studio tool is excellent. I use this to create the databases I need and then use Visual Studio to manage them (saves switching windows and running both applications when you're working in VS all day anyway). I used to have my issues with the old Enterprise manager software but things really seems to have stepped up for SQL Server 2008 and the new management studio.
Like the title of your question suggests, you're wanting to use this with Visual Studio. If you decide to do use SQL Server then you should:
Download the express edition
Download SQL Server management studio
Create a database
In Visual Studio - click View -> Server explorer -> right click Data connections and add connection. Select MS SQL Express and choose localhost as your server. You can then select the database you created using the management studio.
There you have it - integration with VS.
You say you're using C#.Net - well SQL server and .Net go hand-in-hand. Obviously you can hook up to other third party databases but SQL was really made to work with this stuff. It's a powerful database engine and will do everything you'll ever need as well as being well supported by Microsoft and the wider community.
If your final goal is to have hands-off single-click installation then I don't think SQL Server Express is your best bet because it's not a file-based embedded database. It's a great db and very easy to work with, but when it comes to deployment still takes some installation effort. You could try one of: SQL Server Compact Edition, SQLite or Firebird Embedded.
SQLExpress is free and for development purposes is pretty much interchangeable with the full SQLServer
http://www.microsoft.com/express/Database/
SQL SERVER seems to be the logical one.
If the compatibility level in an Sql Server 2008 R2 database is changed to 2005, can the copy database wizard copy the database without any issues from 2008 R2 to 2005?
Or is Generating scripts the only way to copy a 2008 R2 database to a 2005 database.
I don't believe you can use the Copy Wizard to downgrade your database back to 2005. However, the DataImport... task in SSMS should be able to help you move your data tables and views. (Basically it creates an SSIS package to transfer table definitions and data)
But if you want to truly move the database scripting is your best bet. Also you can check out tools from Red Gate such as SQLCompare and SQLDataCompare.
Just becasue a compatibility level is set to a lower value than the current version does not forbid you to use the newer features. All it does is stop enforcing the removal of features to preserve backward compatibilty of existing code. Since you can use new datatypes and features in your 2008 database, you cannot directly copy back to 2005 without analysis of what new features were used.
If you are developing in 2008 and prod is 2005, you need to stop that practice immediately. Otherwise you will waste a lot of time using new features without realizing it until you try to send to prod.
Database changes should only ever be done through scripts in general as you do not want to risk dropping and recreating tables that have existing data. Also database change scripts should be in source control for the version you are deploying like any other code. Part of making the changes in scripts is that the script you then run on prod has been tested on dev and QA.