Import SQL DB - PK comes over as Unique constraint
 
Home My Account Forum Try It! Buy It!
About Contact Us Site Map
StrataFrame Forum
Home      Members   Calendar   Who's On
Welcome Guest ( Login | Register )
      



Import SQL DB - PK comes over as Unique...Expand / Collapse
Author
Message
Posted 07/29/2007 9:27:51 PM


StrataFrame Novice

StrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame Novice

Group: StrataFrame Users
Last Login: Today @ 3:02:05 PM
Posts: 119, Visits: 634
I imported a VFP database to DDT, made the necessary corrections and created a SQL database.

All went well.  Then realized I didn't want clustered UID pks. Made the change in DDT but DDT could not uncluster the indexes ( error said they had to be dropped and recreated and DDT didn't seem to want to do that )

Okay, so I used T-SQL to drop all constraints, keys etc on all the tables in the sql dbc.  Then I recreated all the pks as non-clustered.

Now I wanted to reimport into DDT.  Decided to do it into a different project.  i think that is where it started to go wrong.  All the structure came over and the indexes came over but they are just unique constraints - not primary keys and will not accept a default value of NEWID()

They show up as primary in the field list

but the index

If I try to add NEWID() as a default value I get

DataLayerSavingException
  The INSERT statement conflicted with the FOREIGN KEY constraint "fk_indexes_indexfields". The conflict occurred in database "StrataFrame", table "dbo.DBEIndexes", column 'idx_pk'.
The statement has been terminated.
SqlException
  The INSERT statement conflicted with the FOREIGN KEY constraint "fk_indexes_indexfields". The conflict occurred in database "StrataFrame", table "dbo.DBEIndexes", column 'idx_pk'.
The statement has been terminated.

I haven't had this problem with my other databases

I tried completely deleting all the DDT projects connected with this database and then importing to a new project in DDT but get the same result.

To test this :

I created a new database called Testit.  One table Names ( ckey UID, cname char(10) )

Created PK on ckey

Imported into a new DDT project and got the same result.  pk_ckey is Unique Constraint, not PK

Am I doing something wrong or is this a bug?  Don't think I had this problem in 1.6

Post #10617
Posted 07/30/2007 9:19:16 AM


StrataFrame Developer

StrataFrame Developer

Group: StrataFrame Developers
Last Login: Today @ 11:13:06 AM
Posts: 4,104, Visits: 4,176
I may have missed something, but I am not having a problem.  I checked the Primary Key option on the ckey field and it created the index for me.

If you then look at the index, it has created the clustered index properly.

Please let me know if I am not understanding your problem.  Thanks.

Post #10630
Posted 07/30/2007 10:26:57 AM


StrataFrame Novice

StrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame Novice

Group: StrataFrame Users
Last Login: Today @ 3:02:05 PM
Posts: 119, Visits: 634
I think I just complicated the problem with the way I asked the question

The problem is not going from DDT to deployment, but in importing an existing SQL DB

Please try this : Create SQL database Testit.  Create 1 table Names ( ckey UID, cname CHAR(10))

Put PK on ckey ( seems to not matter if clustered or non-clustered )

do this directly in SQL Server, not through DDT

Now create a new project in DDT and import Testit.  Look at index node and notice it is a Unique Constraint.  Try to put a NEWID() default value on ckey

What results do you get?

Post #10637
Posted 07/31/2007 10:49:28 AM


StrataFrame Developer

StrataFrame Developer

Group: StrataFrame Developers
Last Login: Today @ 11:13:06 AM
Posts: 4,104, Visits: 4,176
I will try to set this up and test it later.  One question though, if you manually delete the index then modify the structures for the table then click Save, it should re-create the index for you.  Does the index get created properly after the save?
Post #10645
Posted 07/31/2007 2:16:08 PM


StrataFrame Novice

StrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame Novice

Group: StrataFrame Users
Last Login: Today @ 3:02:05 PM
Posts: 119, Visits: 634
In the DDT project for the sample I outlined above if I delete the Index under the index node the ckey field remains checked as primary but on save a true pk index is in the node as it should be and all is well.

I think that in 1.6 - my first exposure to DDT when I was testing everything - importing the test database I outlined above would have created a pk index without problems. 

I'll be curious to know if anyone who still has 1.6 can confirm that or what results you get in running the test against 1.61

( understand - these nit pickings are small ones - the DDT is one of the most incredible tools i've experienced in 25 years of playing with databases.  I'm currently talking it up in the VFP community as a must-have even if you aren't doing .NET. )

TIA

Post #10650
Posted 08/01/2007 11:10:00 AM


StrataFrame Novice

StrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame Novice

Group: StrataFrame Users
Last Login: Today @ 3:02:05 PM
Posts: 119, Visits: 634
This seems to be a UID issue. 

If I create a table with an integer identity primary key it imports as expected.  Create exactly the same thing with a UID as pk and the key become a unique constraint instead of a pk

I'm pretty sure this is a bug .

Post #10661
Posted 08/02/2007 9:41:56 AM


StrataFrame Developer

StrataFrame Developer

Group: StrataFrame Developers
Last Login: Today @ 11:13:06 AM
Posts: 4,104, Visits: 4,176
Charles,

Thanks for all of your kind words.  We will look into this.  Thanks for the info.

Post #10681
Posted 08/06/2007 9:29:01 AM


StrataFrame Novice

StrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame NoviceStrataFrame Novice

Group: StrataFrame Users
Last Login: Today @ 3:02:05 PM
Posts: 119, Visits: 634
Have you had any luck reproducing this? 

UID pks are definitely not importing correctly from SQL 2005 databases into DDT

Post #10727
Posted 08/06/2007 10:37:07 AM


StrataFrame Developer