|
Set all of the data entry fields to read-only by selecting all of the controls and setting the Locked property to Yes
|
|
|
|
|
Hello everyone!
Right now I've created a small Windows service that parses binary data files and stores information from there to a MS SQL Server database. Right now each file takes about 15 mins to parse, and that is about 3500 - 4000 INSERT statements.
I'm worried that this time gets bigger as the database grows. Okay, I don't have a production server and it all runs on a standard desktop-like hardware, but still 15 mins is way too much for 3000 operations.
Right now it uses CRecordset MFC classes, and this type of cycle running:
<br />
CRecordset db;<br />
db.Open()<br />
while (run)<br />
{<br />
db.AddNew();<br />
...<br />
db.Update();<br />
}<br />
db.close()<br />
Are there any ways to boost all this up? What I have in mind is switching to another technology (OLE DB or even a 3d-party classes like SQLApi), or implementing bulk inserts, but haven't yet found any good examples/articles.
I appreciate your help (or links) greatly!
--
Take care!
|
|
|
|
|
INSERT performance, in the long run, is going to depend on your database index structure. The more indexes you have on the fields of a particular table, the slower non-SELECT operations become because of the time required to maintain those indexes on every change in the database. Indexes speed up SELECT operations, but slow down everything else. You have to find a balance between the two that is acceptable to you.
|
|
|
|
|
Just over 3 inserts per second seems to be very slow indeed.
You should get better performance from using bcp.exe or DTS to do bulk inserts.
|
|
|
|
|
Hi Everyone:
I have designed a Windows data entry form that contains the following standard controls: 5 – labels, 1 – List box, and 4 –text boxes. The purpose of this form is to enter data into a single SQL server 2005 database table.
Visual Studio 2005 has a nifty control called the BindingNavigator. I would like to use this control so the user can add, edit, delete or just plain navigate though the data stored in the database table.
Does anyone know where I can find some step by step instructions on how to do this using VB.NET code? I tried using the connection wizard and couldn’t get it to work like I wanted it too.
Thanks in advance,
Quecumber256
|
|
|
|
|
|
MSDE has a 2GB database limit, what I need to know is does this inlcude the log file size also or is it just the maximum size of the data file? I can't find an documentation about it.
only two letters away from being an asset
|
|
|
|
|
Just a question, why aren't you using sql express? It has a 4GB database limit and allows you to fully use 1 CPU. To answer your question, the limit is per database. Since the log file is part of the database I believe it is included, but I could be wrong.
Here is a link comparing msde and sql express
http://www.microsoft.com/technet/prodtechnol/sql/2005/msde2sqlexpress.mspx[^]
Ben
|
|
|
|
|
MSDE was installed previously. I needed to find the answer to convince everyone that SQL Express was the better choice and fight the "it's not broken, don't fix it" arguments. They have been experiencing issues retoring a database that is well over the 2 GB limit, with log file.
only two letters away from being an asset
|
|
|
|
|
Well, I don't know if this totally works, but you could try removing the log and then seeing if you could restore without the log. I haven't actually tried it. If you can restore without the log then it would seem that the database limit includes the log file.
Ben
|
|
|
|
|
Mark Nischalke wrote: They have been experiencing issues retoring a database that is well over the 2 GB limit, with log file.
Well, I guess it's not "not broken" then, is it?! On top of that, MSDE isn't going to be supported on any O/S past Windows XP.
MSDE had a 2GB data file limit. This includes the MDF and NDF files, NOT the log files.
|
|
|
|
|
Thanks. It makes sense, but without any clear documentation that I could find I was unsure.
only two letters away from being an asset
|
|
|
|
|
Yeah, I had to dig for a while to find it. It just didn't feel right saying that it included the log file when it's possible for a log file to be huge compared to the size of the data. So, I had to hunt for it.
|
|
|
|
|
Hi ,
running the query ,say, strQuery , in a query analyzer generates results returning rows ...but folowing code does'nt make it the same ...
strQuery = " some query which works in query analyzer";
DataSet ds = new DataSet();
SqlDataAdapter adapter = new SqlDataAadapter(strQuery,connetion);
ds.tables.add("tablename");
adapter.fill(ds,"tablename"); //it takes 10 seconds at min
....
...
...
int nRows = ds.Tables[0].Rows.Count; // nRows is always 0 showing no record
any help ,,,,,
-- modified at 7:42 Monday 14th May, 2007
Madni
|
|
|
|
|
You need to set selectcommand for SqlDataAadapter
|
|
|
|
|
I set this property with the SqlCommand instance ... didnt work either
Madni
|
|
|
|
|
Can you post the code snippet how you do it?
|
|
|
|
|
this is almost the same as posted ,.... infact my development machine doesnt support the internet facility ... it will be hard for me to do that ... should i have to add the columns as well in datatable before adding it to dataset ,,,.... ???
Madni
|
|
|
|
|
fulbright wrote: SqlDataAdapter adapter = new SqlDataAadapter(ds,connetion);
replace above line with
SqlDataAdapter adapter = new SqlDataAadapter(strQuery,connetion);
|
|
|
|
|
sorry for the mistake .... this is already like that ...
I need to edit my post ,... .thanks for the correction any ways ,,,
Madni
|
|
|
|
|
in that casr check you mapping table may be its not mapped properly.
Try once like this
adapter.Fill(ds);
and access like this
ds.Tables[0].Rows[0]["Col"]
|
|
|
|
|
im a begginer,i have 3 different tables [customer,invoice,projects]
Customer table
intcid[PK]
Companyname
ProjectTable
intprojectId[PK],
intCid[FK],
strName ,
startdate,
Invoice Table
intinvoiceId[PK]
intCid[FK]
intProjectId[FK]
monTotal
i want to select these tables based on the Project name i give..
if the project doesnt have invoice also i have show the output as null in the corresponing row.
i given this query
SELECT
c.intCid,
c.strCompany_name,
p.intProjId,
p.strName,
p.dteStartDate,
p.dteFinalEndDate,
p.strDescription,
i.monTotalamount,
i.intInvoiceId
FROM Invoice i,Customers c,Projects p
WHERE p.intProjId=i.intProjectId
and p.intCid=c.intCid
and p.intProjId=@intProjId
but it givs the value only if the project has invoice record.
can any one help me??
|
|
|
|
|
use following query
SELECT
c.intCid,
c.strCompany_name,
p.intProjId,
p.strName,
p.dteStartDate,
p.dteFinalEndDate,
p.strDescription,
i.monTotalamount,
i.intInvoiceId
FROM Invoice i
LEFT OUTER JOIN Projects p ON p.intProjId=i.intProjectId and p.intProjId=@intProjId
LEFT OUTER JOIN Customers c ON p.intCid=c.intCid
|
|
|
|
|
thanks for the reply...but its not working....
getting all value null..
|
|
|
|
|
i think Projects is your main table .NP run following
SELECT
c.intCid,
c.strCompany_name,
p.intProjId,
p.strName,
p.dteStartDate,
p.dteFinalEndDate,
p.strDescription,
i.monTotalamount,
i.intInvoiceId
FROM Projects p LEFT OUTER JOIN Invoice i
ON p.intProjId=i.intProjectId LEFT OUTER JOIN Customers c ON p.intCid=c.intCid
WHERE p.intProjId=@intProjId
|
|
|
|