$dbh = DBI->connect("DBI:ODBC:driver={SQL Server};Server=$server;Database=$database;UID=$dbusername;PWD=$dbpassword") || die "$Error_Message $DBI::errstr";
print ".......Connection successful\n\n";
&prep_tbl("Sites");
&prep_tbl("Data_Centers");
sub prep_tbl
{
my ($tbl) = @_;
print "\nPreparing Mssql2008 table: $tbl,....";
my $dbh_tmp = DBI->connect("DBI:ODBC:driver={SQL Server};Server=$server;Database=$database;UID=$dbusername;PWD=$dbpassword");
# Check Database for tables, IF NOT EXISTS then just create it
$dbh->do("IF NOT EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'[dbo].[$tbl]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
CREATE TABLE [dbo].[$tbl] (@{$tables->{$tbl}})");
my $sth = $dbh->prepare("SELECT constraint_name FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE TABLE_NAME = '$tbl'");
$sth->execute;
my $temp = $sth->fetchrow_arrayref;
foreach my $rel (@$temp)
{
next unless ($rel =~ /ID/);
$dbh_tmp->do("ALTER TABLE $tbl DROP CONSTRAINT $rel");
}
#### The code below doesn't work - it doesn't recreate the table again!
$dbh->do("IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'[dbo].[$tbl]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[$tbl];
CREATE TABLE [dbo].[$tbl] (@{$tables->{$tbl}})");
print "Done\n";
}
####
DBD::ODBC::db do failed: [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt (SQL-HY000) at U:\Do
ccuments\Scripts\Test\test.pl line 60.
Preparing Mssql2008 table: Sites,....Done
DBD::ODBC::db do failed: [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt (SQL-HY000) at U:\Do
ccuments\Scripts\Test\test.pl line 60.
Preparing Mssql2008 table: Data_Centers,....Done
####
my $dbh3 = DBI->connect("DBI:ODBC:driver={SQL Server};Server=$server;Database=$database;UID=$dbusername;PWD=$dbpassword");
$dbh3->do("IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'[dbo].[$tbl]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[$tbl];
CREATE TABLE [dbo].[$tbl] (@{$tables->{$tbl}})");