Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium


VS 2008 Data Project. Create tables in different schema's

Posted on 2011-02-19
Medium Priority
Last Modified: 2013-11-26
Hi there,

I have a database project that creates tables. Some of the table structures are the same but are unique to a particular currency. So say I have a table called CurrencyQuote and I want one for each currency then what I done was create a Schema for each currency and then create that table in the schema.

However I want to Automate this from VS 2008 database project and dont want to create a table script for each currency when the only thing different is the schema that it goes into. Also if I want to add a column to the table I have to update all the curreny tables rather than just updaing the one table and then running it against the various schemas.

Any ideas on this ... thanks Mick
Question by:MickyMc
  • 3
  • 3
LVL 22

Accepted Solution

8080_Diver earned 2000 total points
ID: 34952050

When you say you want the tables created in other schemas, I am guessing that your tables are normall created in the dbo schema and that you are doing either CREATE TABLE [dbo].TableName] or CREATE TABLE TableName].  In any case, all you really need to do is to specify the Schema, as in CREATE TABLE [schema].TableName].

Now, having said that, you also throw in the need to add a column to all instances of a given tablename.  Doing this dynamically is a very questionable practice (and is not included in the list of Best Practices ;-).  Therefore, I have to ask, "Why would you be needing to dynamically add a column to a table?"

I am also curious as to why you are wanting to create multiple CurrencyQoute tables.  Could you not just put a column for the CountryCode in a single CurrencyQuote table?  

Author Comment

ID: 34956543
ah thanks 8080 for the reply. All your questions are totally valid and a few quick answers below for you.

I have 7 currencys which I recieve may 100 quotes a sec for... add this up over a period and the table gets big. So I,ve broken the table into 7 tables and used the Schema for each so I would have 7 schema..called EUR, GBP, USD  etc and a table called Currency quote in each.

I have 1 stored proc that is called and depending on the Currency passed in I update the table in that schema. When the tables get big, I aggregate the data up and delete some of the historial data. I do this to keep the tables light as I also need to read from them. This imho is faster than creating one big table.

Hope this explains a bit of the madness.

However I have a VS 200 database project and what I do is I have a schema script for each Currency. I then want to put the one currencyquote table, into each schema.. so really I want to loop for each schema and create a table in it.

Now all I want to know, is there a way to automate such a process in VS 2008 DB project. Instead I have 7 tables created for each schema... eg Create Table EUR.CurrencyQuote ... Create Table GBP.Currency quote.  If I want to add a column I need to change the 7 create scripts.

I hope this explains what I mean.

All the best and thanks Mick
LVL 22

Assisted Solution

8080_Diver earned 2000 total points
ID: 34956583

Why not set up a stored proc that you call, passing in the schema/currency name, in order to create the tables.  That way, you only have teh one place to do maintenance (the SP) and you can use it to create whatever currency tables you may need (for instance, if you ever need to handle Guatemalan Quetzals, you can do so ;-).

Since you are in SS2008, you could also partition the table by the currency flag, couldn't you? :-)
Get your Disaster Recovery as a Service basics

Disaster Recovery as a Service is one go-to solution that revolutionizes DR planning. Implementing DRaaS could be an efficient process, easily accessible to non-DR experts. Learn about monitoring, testing, executing failovers and failbacks to ensure a "healthy" DR environment.


Author Comment

ID: 34956765
emmh, kinda like the idea of using a sproc to create the tables 8080. I could also add it to a list of tables and inside my sprocs to get the data, I could check if the table was supported... Emmhh got me thinking 8080.

As for the partitions, at the time I read a fair bit on this approach and I was going to go for it, but there was a few gotcha's that I didnt like and cant remember... joys of getting old... I mean older :-)

Tick data is fairly intensive and this approach seemed to also be used by a few other people in the same game.

So all in all 8080, you dont think VS 2008 Db proj can handle this, which is my gut feeling also... but you have give me a viable solution.  If I dont hear another in the next day... points are yours for imagination :-)  thanks Mick
LVL 22

Expert Comment

ID: 35440478

I don't know if you read the author's last post, but I think the author state a clear intention to award me the point:

"If I dont hear another in the next day... points are yours for imagination :-)  thanks Mick "


Author Comment

ID: 35470972
Dhaest, I thought I had awarded the points to 8080 Diver, so just wondering why you are flagging this.

Sorry about that 8080 Diver... havnt changed my mind honest lol :-)

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Simulator games are perfect for generating sample realistic data streams, especially for learning data analysis. It is even useful for demoing offerings such as Azure stream analytics, PowerBI etc.
This shares a stored procedure to retrieve permissions for a given user on the current database or across all databases on a server.
THe viewer will learn how to use NetBeans IDE 8.0 for Windows to perform CRUD operations on a MySql database.
Six Sigma Control Plans

578 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question