Showing posts with label time. Show all posts
Showing posts with label time. Show all posts

Friday, March 30, 2012

Page (1:14440325), slot 6 for text, ntext,or image node does not e

Hello,
This is the second time in less than 2 weeks this has happened to my db
server.
Page (1:14440325), slot 6 for text, ntext, or image node does not exist..
I have performed a dbcc checktable and UPDATE STATISTICS ��TBLNAME�� WITH
FULLSCAN after obtaining the table info. from the following
dbcc traceon(3604)
dbcc page(dbname,1, 14440325)
dbcc traceoFF(3604)
Do not know why it is happening��
TIA,
Manoj Kumar
DBCC is of limited use when dealing with BLOB data types. Generally when
you have repeated allocation mismatches, there is an underlying hardware
problem. I would check the system and application event logs for a disk
subsystem fault.
Geoff N. Hiten
Senior Database Administrator
Microsoft SQL Server MVP
"Manoj Kumar" <ManojKumar@.discussions.microsoft.com> wrote in message
news:C1AE4DDE-F52A-4151-A634-01BB3F3E3063@.microsoft.com...
> Hello,
> This is the second time in less than 2 weeks this has happened to my db
> server.
>
> Page (1:14440325), slot 6 for text, ntext, or image node does not exist..
> I have performed a dbcc checktable and UPDATE STATISTICS ��TBLNAME�� WITH
> FULLSCAN after obtaining the table info. from the following
> dbcc traceon(3604)
> dbcc page(dbname,1, 14440325)
> dbcc traceoFF(3604)
> Do not know why it is happening��
>
> TIA,
> --
> Manoj Kumar
|||Thanks Geoff.
I do not see any issues in the evt log which are related with physical disk
subsystem or RAM although the dbcc page(DBName,1, 19440325,2) does indicate a
data corruption!!
Manoj Kumar
"Geoff N. Hiten" wrote:

> DBCC is of limited use when dealing with BLOB data types. Generally when
> you have repeated allocation mismatches, there is an underlying hardware
> problem. I would check the system and application event logs for a disk
> subsystem fault.
> --
> Geoff N. Hiten
> Senior Database Administrator
> Microsoft SQL Server MVP
>
>
> "Manoj Kumar" <ManojKumar@.discussions.microsoft.com> wrote in message
> news:C1AE4DDE-F52A-4151-A634-01BB3F3E3063@.microsoft.com...
>

Monday, March 26, 2012

PackageID in Logging Provider

Is there a technical reason (I imagine the real reason is time) that PackageID wasn't included as a Logging Provider column to log? While you can still track this by doing some fun things like event handlers or self-joining, I would think from a usability perspective, you should avoid that altogether by just adding the column.

I added a suggestion here to vote on if anyone else agrees:

http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=e58141d5-859f-4941-a675-cb9352d85575

-- Brian

I'd rather have PackageName!!!

Mind you, one thing I do is dynamically set up the name of my log file using the following expression:

REPLACE(@.[System::PackageName], " ", ".") + (DT_STR, 4, 1252) DATEPART( "yyyy", @.[System::StartTime] ) + RIGHT("0" + (DT_STR, 2, 1252) DATEPART( "mm", @.[System::StartTime] ), 2) + RIGHT("0" + (DT_STR, 4, 1252) DATEPART( "dd", @.[System::StartTime] ), 2) + RIGHT("0" + (DT_STR, 4, 1252) DATEPART( "hh", @.[System::StartTime] ), 2) + RIGHT("0" + (DT_STR, 4, 1252) DATEPART( "mi", @.[System::StartTime] ), 2) + RIGHT("0" + (DT_STR, 4, 1252) DATEPART( "ss", @.[System::StartTime] ), 2) + ".log"

Which gives a package logfilename of MyPackageName20060111142153.log

i.e. Something that contains the package name, and the added benefit that you get a new file for each execution

-Jamie

Friday, March 23, 2012

Package Update and Build Process

My SSIS solution has about hundred packages and time to time I have to edit a package. I understand I could use 'Build' command to compile only updated package, as opposed to Rebuild which recomplies all of the packages.

Nevertheless, in both cases SSIS opens all of the packages in design environment before compilation. My packages are saved in SourceSafe and that process takes quite long and I was wondering if there was any other way to compile only updated package where none of the other packages are opened during Build/Rebuild process? For example we could use dtutil to deploy only updated packages without running Package Installation Wizard.

Turn the of the "Build deployment Utility" option ala http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=874332&SiteID=1. With this option disabled, each package will cease opening every time you debug just one package via F5 or select the build project or build solution menu items.

For that matter, turn off the Integration Services project "Build" option in Visual Studio's Configuration Manager. SSIS in BIDS doesn't compile/build anything, but rather, copies your hundred .dtsx files to the project relative "bin\" subdirectory. Its doubtful you need four copies of each of the hundred packages, one each in source control, and three each in your local workspace, two of which are superflous (e.g. those copies in bin\ and bin\Deployment)

As you mentioned, use dtutil, or xcopy for that matter (if appropriate) for deployment, rather than the Package Installation Wizard. For example see http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1828408&SiteID=1, wherein dtutil is used for SQL server deployment.

|||

Thanks very much, your suggested approach would save me painful waiting time I had to endure before.

Asaf

sql

Package Time Outs

Okay, we have are running our Master Package (and therefore all related Child packages) through a .bat file. The .bat file is scripted using the following logic for an entire month of daily runs:

Code Snippet

DTExec /FILE E:\ETL\FinancialDataMart\Master.dtsx /DECRYPT masterpwd /SET \Package.Variables[ReportingDate].Value;"2/01/2007" > E:\ETL\ErrorLogs\Processing\etl_20070201log.txt
IF NOT %ERRORLEVEL%==0 GOTO ERROR%ERRORLEVEL%
mkdir E:\ETL\ErrorLogs\Archive\20070201
move E:\ETL\ErrorLogs\Processing\*.txt E:\ETL\ErrorLogs\Archive\20070201


DTExec /FILE E:\ETL\FinancialDataMart\Master.dtsx /DECRYPT masterpwd /SU /SET \Package.Variables[ReportingDate].Value;"2/02/2007" > E:\ETL\ErrorLogs\Processing\etl_20070202log.txt
IF NOT %ERRORLEVEL%==0 GOTO ERROR%ERRORLEVEL%
mkdir E:\ETL\ErrorLogs\Archive\20070202
move E:\ETL\ErrorLogs\Processing\*.txt E:\ETL\ErrorLogs\Archive\20070202

etc...

Generally it takes about 40-45 minutes to run one days worth of data. However, we have found unpredictable instances where the job will take 3 hours or even 6 hours and appear to hang....

The weirdness sets in when we kill the job and rerun it. In all instances of a rerun, the job will execute in the normal 40-45 minute time frame. Obviously, we would like to institute some sort of logging, monitoring and error handling....including if need be a method to timeout a process and restart it.

I am reviewing the WMI (Windows Management Instrumentation) Task but I'm not entirely convinced that it's the right tool for the job.

Questions:

    Has anyone else experienced the type of processing behavior that I described? Has anyone been successful at using WMI or another process to monitor and timeout packages? If so, are there sample packages or a good tutorial that maps it out? Unrelated to this issue, we also have instances incomplete processing logs. The logs don't finish writing and the weird part is that they all end at the same point, does anyone have experience with incomplete job logs?:

    Code Snippet

    Progress: 2007-06-20 12:46:49.87
    Source: Update factFinancial Data Flow
    Cleanup: 11% complete

Thanks in advance!

Sounds like you're encountering some sort of deadlock. It's not clear to me whether or not you've enabled logging in all the packages; have you?

Have you installed SP2? We added some more logging in SP2 around calls to external databases.

You shouldn't need to kill the packages, but if you really, really want to go that way, you could use a Execute Process tasks (calling DTExec) instead of the Execute Package tasks, and set the TimeOut TerminateProcessAfterTimeout properties.

PACKAGE START / PACKAGEEND In SSIS

This is a repeat listing - third time - of this problem.

Here's the deal:
If I turn on logging on an SSIS package in Development Studio, when the package executes it will log all the events I choose to the sysdtslog90 table in the MSDB database - INCLUDING the PACKAGESTART and PACKAGEEND events.

When I create my own custom logging, however, those two events ARE NOT being logged, even though I explicitly state in my script I want those two logged. Everything else in the script (OnWarning, OnPreExecute, OnPostExecute, etc.) is being logged.

In my reading, it states that the PACKAGESTART and PACKAGEEND events are defaults and are always logged and cannot be excluded.

If this is the case, can someone explain why they aren't getting logged?

I've seen other people have run across the same issue...This is largely due to technical issues within SSIS. In their rush to release SSIS with SQL Server 2005, Microsoft was unable to get the product fully assed. As a result, SSIS is half-assed at best, and portions of it are barely one quarter assed. You can add this glitch to a collection of SSIS inadequacies, including the ability to import XML but not the ability to export XML, and the ability to add headers to output files but not footers.|||I heard tale that SP2 supposedly clears this up? Is that what you've heard, or can I pretty much just hang it up?

Thanks!|||I haven't heard anything about SP2. Sure would be nice if they someday finished the application they rolled out.|||This is largely due to technical issues within SSIS. In their rush to release SSIS with SQL Server 2005, Microsoft was unable to get the product fully assed. As a result, SSIS is half-assed at best, and portions of it are barely one quarter assed. You can add this glitch to a collection of SSIS inadequacies, including the ability to import XML but not the ability to export XML, and the ability to add headers to output files but not footers.I didn't know that. Gives me a nice "after the fact" sense of smugness that I have so far been able to avoid using the pesky thing entirely.


I heard tale that SP2 supposedly clears this up? Is that what you've heard, or can I pretty much just hang it up?

Got any links? I would like to keep up even if I still come to the conclusion that it is more hassle than it is worth.|||Here ya go:

http://www.microsoft.com/downloads/details.aspx?FamilyId=d07219b2-1e23-49c8-8f0c-63fa18f26d3a&DisplayLang=en|||To any and all interested parties:

I eventually got a response from the Mothsership herself...see below:

I believe the reason the package in the linked thread was working after SP2 is that it was using an Execute Package task, while you are using a script task. The problems you're seeing don't seem to have anything to do with your custom logger - I was able to reproduce the issue using a simple package with a SQL Logger configured.

The PackageStart and PackageEnd events are special, in that they are always fired, regardless of filtering. However, it looks like executing a package through the script task stops the event from actually being propogated up. I'm unable to determine the cause right now, but I will log an internal bug for further investigation.

As a workaround, could you instead fire a custom event from inside the script task, right before you execute the child package?

This response came directly from someone at Microsoft...

The squeaky wheel does indeed get the grease! I guess we can keep our eyes hopefully peeled for a HotFix maybe...or at least getting this addressed in a future Service Pack.|||...I'm unable to determine the cause right now, but I will log an internal bug for further investigation. One step closer to ass-completeness.|||Man...you crack me up seriously!!!!

Kudos, Blindman ;)

Tuesday, March 20, 2012

Package error: Cannot create thread

I have a child package that has been run successfully multiple times in the last month +. Each time with roughly the same amount of data, give or take a few thousand rows.

Suddenly, this child package is now giving me the following errors from the log file:

Error: 2006-11-17 12:04:19.98
Code: 0xC0047031
Source: DFLT Primary DTS.Pipeline

Description: The Data Flow task failed to create a required thread and cannot begin running. The usually occurs when there is an out-of-memory state.

End Error

Error: 2006-11-17 12:04:20.03
Code: 0xC004700E
Source: DFLT Primary DTS.Pipeline

Description: The Data Flow task engine failed at startup because it cannot create one or more required threads.

End Error

I tried taking the child out of parent and running it by itself. I still get the same error. There are three other child packages that run on the exact same data and they have no problems. The control flow for the package first runs an SQL command. Then it has a data flow. The data flow grabs records from the source, adds two derived columns, looks up data and then stores to the destination. Relatively easy compared to other packages that are running just fine.

I've had our network people check the both the server running SSIS and the database server (two different machines) and there are no memory spike while the package is running.

Any ideas?

The problem could also be related with all the other applications/processes running on that box. Can you try stopping other SSIS packages and applications, and try running the problematic one? if that works, that means the machine is maxed out on available number of threads. or memory...

It's also possible that other applications might be running zombie processes on the box, even if the process seems to exit, there could be a thread or memory leak.

I'd use perfmon tool to read some of the critical resources for the box in which SSIS is running. You don't need to look at the database server, as SSIS creates a new process only on the box it's running. I'd check : thread/process, total thread, memory/process, total memory, page faults.

Package dies after about 10000 seconds.

I have written a package that archives off old orders over night, it appears that this package is failing after about 10000 second every time it is run. I don't think it is memory as I am running it and checking for memory leaks.

Basic run down of package is

EXEcute SQL task to get orders to delete

If a for loop, loop each ordernumber

within the for loop there are 2 dataflow

dataflow 1

find related records in child tables (oldb connection using query)

using a mutli split first

check (with lookup) for records already in archive database

only copy on a fail from the look up

second

delete related records

dataflow 2

do the same but for the parent table

SP1 CTP is installed on server.

Any ideas?

You need to identify where the bottleneck is. Your log file should give some clues as to which task is taking a long time..

-Jamie

|||This might sound like a dumb question but were is my log file?|||

Not a dumb question at all.

You need to configure logging for your package. Right-click on the control-flow surface and select "Logging..."

-Jamie

|||If you have any connection to remote db's, you also want to check that. Some connection get lost or drop after runn continues for a couple of min, hour etc. (i happened to me once because the vendor from which i was downloading the data from had a batch process at their end that always interrupted my download)
Also, you can try doing batch insert to your achieve table by setting the Row per batch to a decent number. That may help it yours inserts are very very larg.

But first, check your loggs as jamei said

Package configurations stored in the database

If the configurations are stored in the database then does the package pick up the configuration as and when required or it a one time pick when the package is executed.

What I plan to do?

When the package is executed, I want to have a script task at the start of the package that will update the configuration table in the database with the values that the package needs to run with. I mean change the values of the configurations of the tasks which will be executed after the script task.

Thanks for your time.

$wapnil

They are a one time pick up at the beginning of execution. Look at the "Execution Results" of one of your packages.|||

How to look at the execution results?

Thanks,

$wapnil

|||

spattewar wrote:

What I plan to do?

When the package is executed, I want to have a script task at the start of the package that will update the configuration table in the database with the values that the package needs to run with. I mean change the values of the configurations of the tasks which will be executed after the script task.

You will not be able to change the table content within the same package that will use it, becasue what Phil has just said.

But, why would you want to change it that way....actually where does that script will get the values from?

Have you looked to the Dtexec SET option to assign values to the package properties instead?

|||

spattewar wrote:

How to look at the execution results?

Thanks,

$wapnil

It's a tab in Visual Studio.|||

I think I got it all wrong. Let me try to explain

I have developed a single package and have stored the configuration details in the database in the table SSIS configurations. Now this package does the task of FTP connect, download files and upload into a destination table in the database. Now I want this package

1) to be able to connect to different FTP servers in a sequence one after the other. The FTP connection details are stored in one more table FTP_Details in the database.

2) OR be able to run multiple instance of this package at the same time, each connecting to different FTP servers and downloading files.

Could you kindly provide your inputs.

Thanks for your responses.

$wapnil

|||

A simple way may be to have a master package with a ForEach loop container and an Execute package task inside. The ForEach loop would iterate through the rows in FTP_Details table to get FTP connection details, and place it/them into a variable(s). Then the Child package will use Parent variable Package configuration to receive the proper connection details on each iteration.

Notice that this approach will not execute the package in parallel.

|||Rafael's got it covered, but in case you need more information (again, the forum search is your friend), here's a link on this very topic:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=729225&SiteID=1|||

Thanks Phil and Rafeal. I got the approach on how to do it now.

just one more question.

If I want to run multiple instances of this package at the same time then what should be the best approach.

again, thanks for your time.

$wapnil

|||You can't run the same package multiple times at once UNLESS you create a master package that calls the same package under an Execute Package task multiple times. Even then though, I'm not sure that's a good idea given that the packages will all share the same GUID (because they are the same!).

I don't understand why you'd want them to run at the same time, when kicking one package off in a foreach loop would be best. If you must run the same package multiple times then perhaps you'd be better off copying the package (physically) and then changing its GUID.

My only concern is how can you run the same package concurrently with another instance of itself without having one step on the other's toes?|||

I would used a foreach loop if it would have suffice our requirement.

One of the requirement could be that we want to download files from 4 different FTPs at the same time and process the files. does this call for creating four different packages , one for each FTP?

Can I not use the dtsexec utility and run the package multiple time by passing different arguments?

Thanks for your time.

$wapnil

|||

spattewar wrote:

I would used a foreach loop if it would have suffice our requirement.

One of the requirement could be that we want to download files from 4 different FTPs at the same time and process the files. does this call for creating four different packages , one for each FTP?

Can I not use the dtsexec utility and run the package multiple time by passing different arguments?

Thanks for your time.

$wapnil

Yes, calling dtexec would work just fine. If you want to make your FTP site list database driven, then no, it won't help. UNLESS, you passed in a key to dtexec or something, and that key matches up to a row in the database.

What we've been talking about here is how you can create one package which will loop through a table to setup the FTP connection to as many sites are listed in the table.

There are numerous ways to do this, of course.|||

Ok understand that.

Then maybe I can save the package configuration into an xml file and the provide that xml file as an input to the dtsexec. This way I can run the same package by passing different configurations files.

What do you say?

Thanks for your time.

$wapnil

|||

spattewar wrote:

Ok understand that.

Then maybe I can save the package configuration into an xml file and the provide that xml file as an input to the dtsexec. This way I can run the same package by passing different configurations files.

What do you say?

Thanks for your time.

$wapnil

Sounds okay to me, if that's what you want to do... I still question the need to run them at the same time.... If you're downloading gigs of data, I'm not sure that you'll get any faster results by running them concurrently versus serialized. The data pipe can only move so much data. So, with that said, you may want to look to build a more modular approach by using a database table to drive your connections.

However you decide, I think you've got enough information to make some progress.|||ofcourse I have. Thanks

Package configurations stored in the database

If the configurations are stored in the database then does the package pick up the configuration as and when required or it a one time pick when the package is executed.

What I plan to do?

When the package is executed, I want to have a script task at the start of the package that will update the configuration table in the database with the values that the package needs to run with. I mean change the values of the configurations of the tasks which will be executed after the script task.

Thanks for your time.

$wapnil

They are a one time pick up at the beginning of execution. Look at the "Execution Results" of one of your packages.|||

How to look at the execution results?

Thanks,

$wapnil

|||

spattewar wrote:

What I plan to do?

When the package is executed, I want to have a script task at the start of the package that will update the configuration table in the database with the values that the package needs to run with. I mean change the values of the configurations of the tasks which will be executed after the script task.

You will not be able to change the table content within the same package that will use it, becasue what Phil has just said.

But, why would you want to change it that way....actually where does that script will get the values from?

Have you looked to the Dtexec SET option to assign values to the package properties instead?

|||

spattewar wrote:

How to look at the execution results?

Thanks,

$wapnil

It's a tab in Visual Studio.|||

I think I got it all wrong. Let me try to explain

I have developed a single package and have stored the configuration details in the database in the table SSIS configurations. Now this package does the task of FTP connect, download files and upload into a destination table in the database. Now I want this package

1) to be able to connect to different FTP servers in a sequence one after the other. The FTP connection details are stored in one more table FTP_Details in the database.

2) OR be able to run multiple instance of this package at the same time, each connecting to different FTP servers and downloading files.

Could you kindly provide your inputs.

Thanks for your responses.

$wapnil

|||

A simple way may be to have a master package with a ForEach loop container and an Execute package task inside. The ForEach loop would iterate through the rows in FTP_Details table to get FTP connection details, and place it/them into a variable(s). Then the Child package will use Parent variable Package configuration to receive the proper connection details on each iteration.

Notice that this approach will not execute the package in parallel.

|||Rafael's got it covered, but in case you need more information (again, the forum search is your friend), here's a link on this very topic:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=729225&SiteID=1|||

Thanks Phil and Rafeal. I got the approach on how to do it now.

just one more question.

If I want to run multiple instances of this package at the same time then what should be the best approach.

again, thanks for your time.

$wapnil

|||You can't run the same package multiple times at once UNLESS you create a master package that calls the same package under an Execute Package task multiple times. Even then though, I'm not sure that's a good idea given that the packages will all share the same GUID (because they are the same!).

I don't understand why you'd want them to run at the same time, when kicking one package off in a foreach loop would be best. If you must run the same package multiple times then perhaps you'd be better off copying the package (physically) and then changing its GUID.

My only concern is how can you run the same package concurrently with another instance of itself without having one step on the other's toes?|||

I would used a foreach loop if it would have suffice our requirement.

One of the requirement could be that we want to download files from 4 different FTPs at the same time and process the files. does this call for creating four different packages , one for each FTP?

Can I not use the dtsexec utility and run the package multiple time by passing different arguments?

Thanks for your time.

$wapnil

|||

spattewar wrote:

I would used a foreach loop if it would have suffice our requirement.

One of the requirement could be that we want to download files from 4 different FTPs at the same time and process the files. does this call for creating four different packages , one for each FTP?

Can I not use the dtsexec utility and run the package multiple time by passing different arguments?

Thanks for your time.

$wapnil

Yes, calling dtexec would work just fine. If you want to make your FTP site list database driven, then no, it won't help. UNLESS, you passed in a key to dtexec or something, and that key matches up to a row in the database.

What we've been talking about here is how you can create one package which will loop through a table to setup the FTP connection to as many sites are listed in the table.

There are numerous ways to do this, of course.|||

Ok understand that.

Then maybe I can save the package configuration into an xml file and the provide that xml file as an input to the dtsexec. This way I can run the same package by passing different configurations files.

What do you say?

Thanks for your time.

$wapnil

|||

spattewar wrote:

Ok understand that.

Then maybe I can save the package configuration into an xml file and the provide that xml file as an input to the dtsexec. This way I can run the same package by passing different configurations files.

What do you say?

Thanks for your time.

$wapnil

Sounds okay to me, if that's what you want to do... I still question the need to run them at the same time.... If you're downloading gigs of data, I'm not sure that you'll get any faster results by running them concurrently versus serialized. The data pipe can only move so much data. So, with that said, you may want to look to build a more modular approach by using a database table to drive your connections.

However you decide, I think you've got enough information to make some progress.|||ofcourse I have. Thanks

Monday, March 12, 2012

Package configuration not used after deployment?

I've been searching for an answer to my question quite some time now and I've not been able to figure it out yet.
Situation:
- I've created a SSIS package containing a bulk insert task.
- I've added a package configuration containing the appropriate connection manager (i.e. dev, beta or live)
- CreateDeploymentUtility = true
- I've copied the deployment folder to our beta server and I started the manifest file to install the package to the sql 2005 server, after that I specified the config file location and changed the value so the approriate connection manager is used.
- When I execute the package from the sql server the package doesn't read the value from the xml config file, it uses the connection which was originally specified in the package, whereas when I run the package from my BIDS it is reading the value from the xml config file?

I can't seem to figure out why this is happening? am I missing something here?
Thnx.

Hmm it seems you need to explicitely point to a config file when running the package,...

P2P Replication Conflicts

Can someone who has had direct experience with this tell me exactly what happens when a conflict (updating same record on two nodes at the same time) occurs in a P2P replication topology? Does the Dist. Agent throw an error? More importantly does the replication set continue to replicate the articles after any error occurs?

Thanks,

Derek

the distribution agent(s) fail. They won't start again until you manually fix the error. -- Hilary Cotter Director of Text Mining and Database Strategy RelevantNOISE.Com - Dedicated to mining blogs for business intelligence. This posting is my own and doesn't necessarily represent RelevantNoise's positions, strategies or opinions. Looking for a SQL Server replication book? http://www.nwsu.com/0974973602.html Looking for a FAQ on Indexing Services/SQL FTS http://www.indexserverfaq.com wrote in message news:e01a768f-ced3-43c1-854f-949ddbd00a29@.discussions.microsoft.com... Can someone who has had direct experience with this tell me exactly what happens when a conflict (updating same record on two nodes at the same time) occurs in a P2P replication topology? Does the Dist. Agent throw an error? More importantly does the replication set continue to replicate the articles after any error occurs? Thanks, Derek|||Peer-To-Peer is transactional replication from everyone to everyone. Transactional replication does not have any capability to detect or resolve conflicts. Therefore, you have to architect the solution such that conflicts can not occur.|||Actually an update "conflict" like the one you describe will not be detected. The last update in will be the one which persists in each peer. An attempt to update rows which don't exist, or delete rows which don't exist, or pk collisions will cause the distribution agent to fail and you will have to manually fix them unless you run in the continue on data consistency errors profile. -- Hilary Cotter Director of Text Mining and Database Strategy RelevantNOISE.Com - Dedicated to mining blogs for business intelligence. This posting is my own and doesn't necessarily represent RelevantNoise's positions, strategies or opinions. Looking for a SQL Server replication book? http://www.nwsu.com/0974973602.html Looking for a FAQ on Indexing Services/SQL FTS http://www.indexserverfaq.com "Hilary Cotter" wrote in message news:eZQBYAHkGHA.1564@.TK2MSFTNGSA01.privatenews.microsoft.com...
> the distribution agent(s) fail. They won't start again until you manually
> fix the error. >
> --
> Hilary Cotter
> Director of Text Mining and Database Strategy
> RelevantNOISE.Com - Dedicated to mining blogs for business intelligence. >
> This posting is my own and doesn't necessarily represent RelevantNoise's
> positions, strategies or opinions. >
> Looking for a SQL Server replication book?
> http://www.nwsu.com/0974973602.html >
> Looking for a FAQ on Indexing Services/SQL FTS
> http://www.indexserverfaq.com > > >
> wrote in message
> news:e01a768f-ced3-43c1-854f-949ddbd00a29@.discussions.microsoft.com...
> Can someone who has had direct experience with this tell me exactly what
> happens when a conflict (updating same record on two nodes at the same
> time) occurs in a P2P replication topology? Does the Dist. Agent throw an
> error? More importantly does the replication set continue to replicate the
> articles after any error occurs?
> Thanks,
> Derek
>

Friday, March 9, 2012

P/T question

I have a perfmon output as:
"(Eastern Standard Time)","Memory\Pages/sec","SQLServer:Memory Manager\Target Server Memory(KB)","SQLServer:Memory Manager\Total Server Memory (KB)"
"11/18/2004 10:30:04.750","692.29290389658956","6686608","6686608"
"11/18/2004 10:30:19.750","57.035332875362883","6686608","6686608"
"11/18/2004 10:30:34.750","50.946407096710089","6686752","6686752"
"11/18/2004 10:30:49.750","45.985057453103487","6686896","6686896"
"11/18/2004 10:31:04.750","80.718985188776941","6686608","6686608"
"11/18/2004 10:31:19.765","51.419713435012362","6686688","6686688"
"11/18/2004 10:31:34.765","83.316956075479524","6686784","6686784"
"11/18/2004 10:31:49.765","86.4656131714503","6686784","6686784"
"11/18/2004 10:32:04.765","184.19541457981779","6687008","6687008"
"11/18/2004 10:32:19.765","1594.8601288134912","6686784","6686784"
"11/18/2004 10:32:34.765","66.843390396403805","6686784","6686784"
"11/18/2004 10:32:49.765","66.840494677987792","6686928","6686928"
"11/18/2004 10:33:04.765","118.8274008488409","6686896","6686896"
"11/18/2004 10:33:19.765","317.40745114920139","6686896","6686896"
"11/18/2004 10:33:34.765","102.44640018841849","6686896","6686896"
"11/18/2004 10:33:49.765","144.69523847001818","6686896","6686896"
"11/18/2004 10:34:04.765","85.31078069975311","6686896","6686896"
"11/18/2004 10:34:19.765","201.69105891920668","6687040","6687040"
"11/18/2004 10:34:34.765","160.50180640532426","6687040","6687040"
"11/18/2004 10:34:49.765","82.745816941897289","6687040","6687040"
"11/18/2004 10:35:04.765","77.598868378704793","6687040","6687040"
"11/18/2004 10:35:19.765","144.36181802848549","6687040","6687040"
"11/18/2004 10:35:34.765","115.436326945804","6687200","6687200"
"11/18/2004 10:35:49.765","220.79121078389826","6687200","6687200"

Does this mean that if I add more memory to the box and allocate it to SQL Server, it will be beneficial?

ThanksThese are very alarming numbers. How much memory DO you have?|||We have 8GB on the box and 6GB (approx.) allocated to SQL Server. This is a very intensive i/o and oltp application.

Wednesday, March 7, 2012

Owner

I have several SQL databases and the owner is different on each of those
depending on who created it over time.
1. Can I change the owner? How?
2. What should I change it to?
3. If I change it to sa would that affect the dbs if I change the sa password?
4. Any issues if the owner account has been removed from windows/active
directory
Thanks
1. Use sp_changedbowner to change the owner of the database
2. Usually I set it to either sa or a Windows account belongs to local
admistrators group. Otherwise, you may run into some unexpected problems. (I
just can't recall what it is. I think it's something related to bulk insert.
I am not sure)
3. No.
4. If you set the owner to sa, then you don't need to worry about this issue.
"Niles" wrote:

> I have several SQL databases and the owner is different on each of those
> depending on who created it over time.
> 1. Can I change the owner? How?
> 2. What should I change it to?
> 3. If I change it to sa would that affect the dbs if I change the sa password?
> 4. Any issues if the owner account has been removed from windows/active
> directory
> Thanks
|||Comments Inline
"Niles" <Niles@.discussions.microsoft.com> wrote in message
news:94EDE74E-7E15-4738-9C17-9657272C5E29@.microsoft.com...
>I have several SQL databases and the owner is different on each of those
> depending on who created it over time.
> 1. Can I change the owner? How?
Yes.
USE MyDatabase
go
EXEC sp_changedbowner ('sa')

> 2. What should I change it to?
SA
> 3. If I change it to sa would that affect the dbs if I change the sa
> password?
No. Passwords affect the login not the database.
> 4. Any issues if the owner account has been removed from windows/active
> directory
There may be some problems, but changing the owner to SA should fix any
lingering issues.
Geoff N. Hiten
Microsoft SQL Server MVP

> Thanks
|||Thanks
"Jack" wrote:
[vbcol=seagreen]
> 1. Use sp_changedbowner to change the owner of the database
> 2. Usually I set it to either sa or a Windows account belongs to local
> admistrators group. Otherwise, you may run into some unexpected problems. (I
> just can't recall what it is. I think it's something related to bulk insert.
> I am not sure)
> 3. No.
> 4. If you set the owner to sa, then you don't need to worry about this issue.
> "Niles" wrote:

Owner

I have several SQL databases and the owner is different on each of those
depending on who created it over time.
1. Can I change the owner? How?
2. What should I change it to?
3. If I change it to sa would that affect the dbs if I change the sa passwor
d?
4. Any issues if the owner account has been removed from windows/active
directory
Thanks1. Use sp_changedbowner to change the owner of the database
2. Usually I set it to either sa or a Windows account belongs to local
admistrators group. Otherwise, you may run into some unexpected problems. (
I
just can't recall what it is. I think it's something related to bulk insert
.
I am not sure)
3. No.
4. If you set the owner to sa, then you don't need to worry about this issu
e.
"Niles" wrote:

> I have several SQL databases and the owner is different on each of those
> depending on who created it over time.
> 1. Can I change the owner? How?
> 2. What should I change it to?
> 3. If I change it to sa would that affect the dbs if I change the sa passw
ord?
> 4. Any issues if the owner account has been removed from windows/active
> directory
> Thanks|||Comments Inline
"Niles" <Niles@.discussions.microsoft.com> wrote in message
news:94EDE74E-7E15-4738-9C17-9657272C5E29@.microsoft.com...
>I have several SQL databases and the owner is different on each of those
> depending on who created it over time.
> 1. Can I change the owner? How?
Yes.
USE MyDatabase
go
EXEC sp_changedbowner ('sa')

> 2. What should I change it to?
SA
> 3. If I change it to sa would that affect the dbs if I change the sa
> password?
No. Passwords affect the login not the database.
> 4. Any issues if the owner account has been removed from windows/active
> directory
There may be some problems, but changing the owner to SA should fix any
lingering issues.
Geoff N. Hiten
Microsoft SQL Server MVP

> Thanks|||Thanks
"Jack" wrote:
[vbcol=seagreen]
> 1. Use sp_changedbowner to change the owner of the database
> 2. Usually I set it to either sa or a Windows account belongs to local
> admistrators group. Otherwise, you may run into some unexpected problems.
(I
> just can't recall what it is. I think it's something related to bulk inse
rt.
> I am not sure)
> 3. No.
> 4. If you set the owner to sa, then you don't need to worry about this is
sue.
> "Niles" wrote:
>

Owner

I have several SQL databases and the owner is different on each of those
depending on who created it over time.
1. Can I change the owner? How?
2. What should I change it to?
3. If I change it to sa would that affect the dbs if I change the sa password?
4. Any issues if the owner account has been removed from windows/active
directory
Thanks1. Use sp_changedbowner to change the owner of the database
2. Usually I set it to either sa or a Windows account belongs to local
admistrators group. Otherwise, you may run into some unexpected problems. (I
just can't recall what it is. I think it's something related to bulk insert.
I am not sure)
3. No.
4. If you set the owner to sa, then you don't need to worry about this issue.
"Niles" wrote:
> I have several SQL databases and the owner is different on each of those
> depending on who created it over time.
> 1. Can I change the owner? How?
> 2. What should I change it to?
> 3. If I change it to sa would that affect the dbs if I change the sa password?
> 4. Any issues if the owner account has been removed from windows/active
> directory
> Thanks|||Comments Inline
"Niles" <Niles@.discussions.microsoft.com> wrote in message
news:94EDE74E-7E15-4738-9C17-9657272C5E29@.microsoft.com...
>I have several SQL databases and the owner is different on each of those
> depending on who created it over time.
> 1. Can I change the owner? How?
Yes.
USE MyDatabase
go
EXEC sp_changedbowner ('sa')
> 2. What should I change it to?
SA
> 3. If I change it to sa would that affect the dbs if I change the sa
> password?
No. Passwords affect the login not the database.
> 4. Any issues if the owner account has been removed from windows/active
> directory
There may be some problems, but changing the owner to SA should fix any
lingering issues.
Geoff N. Hiten
Microsoft SQL Server MVP
> Thanks|||Thanks
"Jack" wrote:
> 1. Use sp_changedbowner to change the owner of the database
> 2. Usually I set it to either sa or a Windows account belongs to local
> admistrators group. Otherwise, you may run into some unexpected problems. (I
> just can't recall what it is. I think it's something related to bulk insert.
> I am not sure)
> 3. No.
> 4. If you set the owner to sa, then you don't need to worry about this issue.
> "Niles" wrote:
> > I have several SQL databases and the owner is different on each of those
> > depending on who created it over time.
> > 1. Can I change the owner? How?
> > 2. What should I change it to?
> > 3. If I change it to sa would that affect the dbs if I change the sa password?
> > 4. Any issues if the owner account has been removed from windows/active
> > directory
> >
> > Thanks

Saturday, February 25, 2012

Overlapping Records by DateTime

Hi guys and gals,
I need to pick your brains for a date/time series question. I'm trying to
write a query that will displays accounts, with their different account type
s
that overlap using the start and end dates.
So say I have the following records:-
AccountId - AccountType - Start - End
1 1 2006-01-01 2006-01-07
2 1 2006-01-06 2006-01-09
3 2 2006-01-02 2006-01-09
I can see that Account 1 and 2 are the same account type, but they overlap
by 1 day however account 3 is different and therefore is fine.
I need to write a query, to decipher all these account that overlap in date
of the same account type. This is part of a larger system, so you may wonde
r
why I wouldn't just place constraints to prevent this from happening, but th
e
reason is that I will allow accounts to overlap, and I have somewhere else i
n
the system a means to elect overlapped accounts based on merit which isn't
required in the query.
I've done some DDL and Inserts here, any help would be greatly appreciated.
Andy
CREATE TABLE Accounts(
AccountId int not null identity(1,1),
AccountType int not null,
UtcDateStart datetime not null,
UtcDateEnd datetime not null
)
CREATE INDEX PK_Accounts_AccountId
ON Accounts (AccountId)
GO
declare @.utcDateTime datetime
set @.utcDateTime = getutcdate()
INSERT INTO Accounts (AccountType, utcDateStart, utcDateEnd)
VALUES (1,@.utcDateTime, dateadd(dd, 7, @.utcDateTime))
set @.utcDateTime = dateadd(dd, 4, @.utcDateTime)
INSERT INTO Accounts (AccountType, utcDateStart, utcDateEnd)
VALUES (1,@.utcDateTime, dateadd(dd, 7, @.utcDateTime))
set @.utcDateTime = dateadd(dd, 5, @.utcDateTime)
INSERT INTO Accounts (AccountType, utcDateStart, utcDateEnd)
VALUES (2,@.utcDateTime, dateadd(dd, 7, @.utcDateTime))
set @.utcDateTime = dateadd(dd, 6, @.utcDateTime)
INSERT INTO Accounts (AccountType, utcDateStart, utcDateEnd)
VALUES (2,@.utcDateTime, dateadd(dd, 7, @.utcDateTime))
set @.utcDateTime = dateadd(dd, 2, @.utcDateTime)
INSERT INTO Accounts (AccountType, utcDateStart, utcDateEnd)
VALUES (3,@.utcDateTime, dateadd(dd, 5, @.utcDateTime))
SELECT * FROM AccountsIs this what you're after...
select
*
from
Accounts t1
join Accounts t2 on t1.AccountType = t2.AccountType
where
t2.AccountId > t1.AccountId
and (t1.UtcDateStart between t2.UtcDateStart and t2.UtcDateEnd
or t2.UtcDateStart between t1.UtcDateStart and t1.UtcDateEnd)
HTH. Ryan
"Andy Furnival" <AndyFurnival@.discussions.microsoft.com> wrote in message
news:893FFA23-53D8-4909-995D-C40BD71AF394@.microsoft.com...
> Hi guys and gals,
> I need to pick your brains for a date/time series question. I'm trying to
> write a query that will displays accounts, with their different account
> types
> that overlap using the start and end dates.
> So say I have the following records:-
> AccountId - AccountType - Start - End
> 1 1 2006-01-01 2006-01-07
> 2 1 2006-01-06 2006-01-09
> 3 2 2006-01-02 2006-01-09
> I can see that Account 1 and 2 are the same account type, but they overlap
> by 1 day however account 3 is different and therefore is fine.
> I need to write a query, to decipher all these account that overlap in
> date
> of the same account type. This is part of a larger system, so you may
> wonder
> why I wouldn't just place constraints to prevent this from happening, but
> the
> reason is that I will allow accounts to overlap, and I have somewhere else
> in
> the system a means to elect overlapped accounts based on merit which isn't
> required in the query.
> I've done some DDL and Inserts here, any help would be greatly
> appreciated.
> Andy
> CREATE TABLE Accounts(
> AccountId int not null identity(1,1),
> AccountType int not null,
> UtcDateStart datetime not null,
> UtcDateEnd datetime not null
> )
> CREATE INDEX PK_Accounts_AccountId
> ON Accounts (AccountId)
> GO
> declare @.utcDateTime datetime
> set @.utcDateTime = getutcdate()
> INSERT INTO Accounts (AccountType, utcDateStart, utcDateEnd)
> VALUES (1,@.utcDateTime, dateadd(dd, 7, @.utcDateTime))
> set @.utcDateTime = dateadd(dd, 4, @.utcDateTime)
> INSERT INTO Accounts (AccountType, utcDateStart, utcDateEnd)
> VALUES (1,@.utcDateTime, dateadd(dd, 7, @.utcDateTime))
> set @.utcDateTime = dateadd(dd, 5, @.utcDateTime)
> INSERT INTO Accounts (AccountType, utcDateStart, utcDateEnd)
> VALUES (2,@.utcDateTime, dateadd(dd, 7, @.utcDateTime))
> set @.utcDateTime = dateadd(dd, 6, @.utcDateTime)
> INSERT INTO Accounts (AccountType, utcDateStart, utcDateEnd)
> VALUES (2,@.utcDateTime, dateadd(dd, 7, @.utcDateTime))
> set @.utcDateTime = dateadd(dd, 2, @.utcDateTime)
> INSERT INTO Accounts (AccountType, utcDateStart, utcDateEnd)
> VALUES (3,@.utcDateTime, dateadd(dd, 5, @.utcDateTime))
>
> SELECT * FROM Accounts|||Xref: TK2MSFTNGP08.phx.gbl microsoft.public.sqlserver.programming:578107
On Tue, 17 Jan 2006 01:41:03 -0800, Andy Furnival wrote:

>Hi guys and gals,
>I need to pick your brains for a date/time series question. I'm trying to
>write a query that will displays accounts, with their different account typ
es
>that overlap using the start and end dates.
>So say I have the following records:-
>AccountId - AccountType - Start - End
>1 1 2006-01-01 2006-01-07
>2 1 2006-01-06 2006-01-09
>3 2 2006-01-02 2006-01-09
>I can see that Account 1 and 2 are the same account type, but they overlap
>by 1 day however account 3 is different and therefore is fine.
>I need to write a query, to decipher all these account that overlap in date
>of the same account type. This is part of a larger system, so you may wond
er
>why I wouldn't just place constraints to prevent this from happening, but t
he
>reason is that I will allow accounts to overlap, and I have somewhere else
in
>the system a means to elect overlapped accounts based on merit which isn't
>required in the query.
>I've done some DDL and Inserts here, any help would be greatly appreciated.
Hi Andy,
Thanks for the DDL and the INSERTS! Made posting a breeze and answering
more fun.
In addition to Ryan's suggestion, here's another one that will work:
SELECT * FROM Accounts
go
SELECT *
FROM Accounts AS a
INNER JOIN Accounts AS b
ON a.AccountType = b.AccountType
AND a.AccountId > b.AccountId
AND a.utcDateStart < b.utcDateEnd
AND a.utcDateEnd > b.utcDateStart
The benefot of this version is that it avoids the use of OR. If the
utcDateStart and utcDateEnd columns in your real table are indexed, my
version will give the optimizer better opportunities to use that index.
Bottom line: test both for performance; choose the one that performs
best or (if there's no significant difference) the one that you find the
easiest to understand.
Hugo Kornelis, SQL Server MVP|||I would use a Calendar table and a query with a BETWEEN predicate. I
would also get a real key as an account_id with a check digit that
comforms to International banking standards instead of that silly and
dangerous IDENTITY pseudo-column.
As a matter of ISO-11179 conventions, the names should be
"start_utedate".
Use a BETWEEN predicate with a COUNT(*) > 1|||> instead of that silly and
> dangerous IDENTITY pseudo-column.
IDENTITY is a property of a column and NOT a column.
There is nothing stopping you creating a check digit based around IDENTITY
either.
There is nothing 'dangerous' about the IDENTITY 'property'.
The IDENTITY property can be successfully used to create surrogate keys or a
natural primary key where no other one may exist, for instance a message
board.
Tony Rogerson
SQL Server MVP
http://sqlserverfaq.com - free video tutorials
"--CELKO--" <jcelko212@.earthlink.net> wrote in message
news:1137635843.478530.301780@.f14g2000cwb.googlegroups.com...
>I would use a Calendar table and a query with a BETWEEN predicate. I
> would also get a real key as an account_id with a check digit that
> comforms to International banking standards instead of that silly and
> dangerous IDENTITY pseudo-column.
> As a matter of ISO-11179 conventions, the names should be
> "start_utedate".
>
> Use a BETWEEN predicate with a COUNT(*) > 1
>

Monday, February 20, 2012

Overcoming MSDE Setup Problems

Here is my experience with installing MSDE.

I'm leaning C# and ASP.NET at the same time using the book "Microsoft ASP.NET Programming with Microsoft Visual C# .NET Step by Step". In Appendix C, P 577, it says to locate setup.exe under ��Microsoft Visual Studio .NET\Setup\MSDE and "run setup.exe to install MSDE."

This was my first mistake, because there are more recent versions available with security patches (for the slammer virus). I have been unable to successfully update the old version. The install program for MSDE has got to be a hackers delight because only a hacker can make it work. I decided to uninstall the old version of MSDE 2000 and install the latest download from the MSDN website. The new version would get most of the files installed and then rollback the install, removing all the files. When I tried to reinstall the old version, it did the same thing. At least the new version requires a password parameter for the sa user. The bad news is that the new password is ignored. Since I already installed the first version with a blank sa password by running setup.exe with no parameters the password will remain blank until I change it using the user friendly osql command line utility. More about osql later��

Here is how I solved the rollback problem:

I first (after many hours trying to modify the registry to clean up the mess Windows uninstaller left there) used the command line switch /L*V <your logfile name> to get a verbose log file. I noticed a property listed called "Disablerollback" this was set to 0. So, I ran setup on the command line as below (all one line):

>setup DisableRollback=1 /L*V "C:\Program Files\Microsoft Visual Studio .NET\Setup\MSDE\setupbat.log" SAPWD="ignored password"

The setup still failed, but its tracks were preserved for XP to complain about on system restart.
I then restarted the system and logged in. XP threw an error dialog box with the message "Your server installation is either corrupt or has been tampered with (unknown package ID)��" I clicked OK and waited a few extra minutes for XP to finish logging me in.

After logging in, I closed the Service Manger from the taskbar notification area. I then deleted the folders 80, and MSSQL (name of default instance) from the target install directory. Finally, I ran setup.exe again as shown:

>setup /L*V "C:\Program Files\Microsoft Visual Studio .NET\Setup\MSDE\setupgood.log" SAPWD="ignored password"

This time, after restarting, my old MSDE worked. This approach seems to only work with the first old version of MSDE that was shipped with Visual Studio .NET. I still have yet to figure out how to upgrade and get MSDE to work again.

Once you get MSDE to work, here are some tips on how to administer it using the osql command tool.
To change the sa password do the following (use null for a blank password):
>osql -U sa
Password:
1> sp-password @.old=null, @.new='newpassword', @.loginame='sa'
2> go
Password has been changed
3> quit

On page 113 of the authors' first attempt with the book "Microsoft ASP.NET Programming��", the hacks wrote:
Set up the SQL Server session state database by running the InstallSQLState.sql batch (located in ��) against the SQL Server you plan to use. (For more information about running batch statements, check with your database administrator or the SQL Server Books Online.)

Here is how to do it with osql:

> osql -S MSSQLSERVER -U sa -i InstallSQLState.sql

For less characters than it took to write the last parenthetical sentence, they could have just given the same example I supplied here.

If you want a graphical interface to administer you MSDE server, try downloading the small package for "Microsoft SQL Web Data Administrator" from Microsoft's website. This even comes with a modern installer. Here are some tips on how to connect to your locally installed MSDE using this utility:

The main dialog just requires that you click the start button. A login page comes up. To log in as sa, do the following:

? Click the "SQL Login" radio button.
? Under "Please enter a SQL Server name:" fill in the following text boxes:
? Username: sa
? Password: [your password | leave blank if no password is set]
? Server: (local)

This should get you to the server tools page. Click "Security", then Logins. Now, on the Logins page, you can add new users. If you install MSDE for mixed mode, you can add "Windows Integrated" user accounts. This best since you won't have to put passwords in your code to allow database access to these users. To add a user, click on "Create New Login". Set Authentication Method to "Windows Integrated" in the combo box. For Login Name you need to use the form <computername>\<username> . For example, "MSSQLServer\Dan".

If you did like I did, and installed MSDE in SQL login mode only, you can do the following registry hack to change it to mixed authentication mode:

1. Locate either of the following subkeys (depending on whether you installed MSDE as the default MSDE instance or as a named instance:
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSqlserver\MSSqlServer

-or-

HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\<Instance Name>\MSSQLServer\

2. In the right-pane, double-click the LoginMode subkey.

3. In the DWORD Editor dialog box, set the value of this subkey to 1. Make sure that the Hex option is selected, and then click OK.

4. Restart the MSSQLSERVER and the SQLSERVERAgent services for this change to take effect.

Try this link for more details:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q322336Correction to this step:
3. In the DWORD Editor dialog box, set the value of this subkey to 1.

For Mixed mode, the subkey should be 0 or 2.
For Windows Integrated only, the subkey should be 1.|||First a syntax typo correction:
change sp-password to sp_password. So the section on changing the sa password should read:

To change the sa password do the following (use null for a blank password):
>osql -U sa
Password:
1> sp_password @.old=null, @.new='newpassword', @.loginame='sa'
2> go
Password has been changed
3> quit

Notes on upgrading to SP3a.

Prerequisites:
1) You have to know the sa password for this solution to work.
2) Parameters in example assume you are in mixed authentication mode.
3) You should stop SNMP services.

Command line setup:
At the command line, type the following or paste this in a *.bat file and run the bat file:

>setup /upgradesp sqlrun DISABLENETWORKPROTOCOLS=1 /L*V C:\sql2ksp3\MSDE\setupbat.log SAPWD=yourSApassword

The "DISABLENETWORKPROTOCOLS=1" is optional. The default when installing a new instance of SP3a is to disable network protocol support. I don't know what the option does when you are simply upgrading. You can run svrnetcn.exe from the Tools\Binn directory to enable network protocols later. I found this tip on another forum: http://www.mcse.ms/message290056.html

You need to check the log file (setupbat.log in this case) to make sure the upgrade finished successfully. It should say, "Configuration completed successfully."

I tried running this without the SAPWD parameter since this was left off the example under section 3.7.4 of the sp3readme.htm file. The upgrade failed. If the sa password is still blank it says to use the BLANKSAPWD=1 parameter. Requiring the password makes sense because the installer needs to access your database files in order to upgrade. The "Northwind" sample database was deleted during the upgrade.|||Ok I've got as far as this line:

>setup /L*V "C:\Program Files\Microsoft Visual Studio .NET\Setup\MSDE\setupgood.log" SAPWD="ignored password"

When I restarted my computer I got the "Your server installation is either corrupt or has been tampered with..." message and the MSDE icon was in my System Tray (with a red square in a white circle). So I closed this program and entered the above code in cmd line. However a dialog box appeared and said it could not locate the above file. I tried looking in the directory specified above and I couldn't find the file or the folders "80" and "MSSQL" either.|||Hello!

I got the same problem when installing MSDE at the end the performance counters install fails, beauce it can not update the reg key (as mentioned in my therad).

To uninstall MSDE see 320873 (german). Tipp you need only the msizap.exe prog. Evt. you dont must donload the whole SDK.
But uninstalling and new installation doesnt help either.

There is still the problem with the performance counters, and there is no solution yet (I really looked the www for the last days and did not found any solution.

lg ifoko|||You need to open a cmd window and run the command from the path where "setup" for MSDE lives. "MSSQL" may be named something else if you used INSTANCE= <name> in your first install. The default install target path is "C:\Program Files\Microsoft SQL Server\". This is where you should find the "80" and "MSSQL" folder to delete. Use a search to locate the "80" folder if you have to.

The other path (C:\Program Files\Microsoft Visual Studio .NET\Setup\MSDE\) is where my Microsoft Visual Studio .NET 2002 is installed. The buggy version of MSDE came with my .NET software.|||To VilleValo:

On second thought, I don't see how you could get "setup DisableRollback=1 /L*V "C:\Program Files\Microsoft Visual Studio .NET\Setup\MSDE\setupbat.log" SAPWD=IgnoredPassword" to work, and you can't get "setup /L*V "C:\Program Files\Microsoft Visual Studio .NET\Setup\MSDE\setupgood.log" SAPWD=IgnoredPassword" to work. I created these commands in .bat files and ran the .bat files. This way, if I needed to make any further modifications, I could edit the .bat files. It also leaves a record of what I did.|||thx dran001 for help.

But my problem is that I got no previous "working" installation of MSDE.

The problem is that I cant update the Perflib\009 key. Either the registry is damaged, or some service lock the key.
And I still no found any help with issue.

lg|||I think my problem was caused by the setup.ini file that came shipped with .NET. This file contains:
[Options]
INSTANCENAME=VSdotNET

So when I did the first install, my instance of MSDE was named VSdotNET. When I tried to install SP3a version after the uninstall, I didn't use the ini file. I ran this install from a different folder. The Windows uninstall must have left references to VSdotNET in the registry which left me unable to install another instance since I had uninstalled the first instance. The default instance is just MSSQL. If you supply an INSTANCENAME option, the instance is named MSSQL$<instancename> or MSSQL$VSdotNET for example.

I think the PerfMon is loaded after the error so that the MSDE installer can draw a nice reverse progress bar as the install is being rolled back. Here is a clip of my log file were I think the real error is:

MSI (s) (7C:DC) [15:59:17:020]: QueryPathOfRegTypeLib returned -2147319779 in local context.Path is ''
MSI (s) (7C:DC) [15:59:17:020]: CMsiServices::ProcessTypeLibrary runs in local context, not impersonated.
MSI (s) (7C:DC) [15:59:17:120]: ProcessTypeLibraryCore returns: 0. (0 means OK)
MSI (s) (7C:DC) [15:59:17:120]: Executing op: TypeLibraryRegister(,,FilePath=C:\Program Files\Microsoft SQL Server\80\Tools\Binn\dtspkg.DLL,LibID={10010001-EB1C-11CF-AE6E-00AA004A34D5},Version=-2147483648,,Language=0,,BinaryType=0,IgnoreRegistrationFailure=0)
MSI (s) (7C:DC) [15:59:17:120]: QueryPathOfRegTypeLib returned -2147319779 in local context.Path is ''
MSI (s) (7C:DC) [15:59:17:120]: CMsiServices::ProcessTypeLibrary runs in local context, not impersonated.
MSI (s) (7C:DC) [15:59:17:181]: ProcessTypeLibraryCore returns: 0. (0 means OK)
MSI (s) (7C:DC) [15:59:17:181]: Executing op: TypeLibraryRegister(,,FilePath=C:\Program Files\Microsoft SQL Server\80\Tools\Binn\dtspump.DLL,LibID={10010200-740B-11D0-AE7B-00AA004A34D5},Version=-2147483648,,Language=0,,BinaryType=0,IgnoreRegistrationFailure=0)
MSI (s) (7C:DC) [15:59:17:181]: QueryPathOfRegTypeLib returned -2147319779 in local context.Path is ''
MSI (s) (7C:DC) [15:59:17:181]: CMsiServices::ProcessTypeLibrary runs in local context, not impersonated.
MSI (s) (7C:DC) [15:59:17:211]: ProcessTypeLibraryCore returns: 0. (0 means OK)
MSI (s) (7C:DC) [15:59:17:211]: Executing op: TypeLibraryRegister(,,FilePath=C:\WINDOWS\system32\atl.dll,LibID={44EC0535-400F-11D0-9DCD-00A0C90391D3},Version=-2147483648,,Language=0,,BinaryType=0,IgnoreRegistrationFailure=1)
MSI (s) (7C:DC) [15:59:17:221]: QueryPathOfRegTypeLib returned -2147319779 in local context.Path is ''
MSI (s) (7C:DC) [15:59:17:221]: CMsiServices::ProcessTypeLibrary runs in local context, not impersonated.
MSI (s) (7C:DC) [15:59:17:261]: ProcessTypeLibraryCore returns: 0. (0 means OK)
MSI (s) (7C:DC) [15:59:17:261]: Executing op: ActionStart(Name=InstallServices,Description=Installing new services,Template=Service: [2])
MSI (s) (7C:DC) [15:59:17:261]: Executing op: ProgressTotal(Total=2,Type=1,ByteEquivalent=1300000)
MSI (s) (7C:DC) [15:59:17:261]: Executing op: ServiceInstall(Name=SQLAgent$VSdotNET,DisplayName=SQLAgent$VSdotNET,ImagePath=C:\Program Files\Microsoft SQL Server\MSSQL$VSdotNET\Binn\sqlagent.EXE -i VSdotNET,ServiceType=16,StartType=3,ErrorControl=1,,Dependencies=MSSQL$VSdotNET
MSI (s) (7C:DC) [15:59:17:871]: Executing op: ServiceInstall(Name=MSSQL$VSdotNET,DisplayName=MSSQL$VSdotNET,ImagePath=C:\Program Files\Microsoft SQL Server\MSSQL$VSdotNET\Binn\sqlservr.exe -sVSdotNET,ServiceType=16,StartType=2,ErrorControl=1,,,,,,)
MSI (s) (7C:DC) [15:59:18:072]: Executing op: ActionStart(Name=InstallPerfMon.2D02443E_7002_4C0B_ABC9_EAB2C064397B,,)
MSI (s) (7C:DC) [15:59:18:082]: Executing op: CustomActionSchedule(Action=InstallPerfMon.2D02443E_7002_4C0B_ABC9_EAB2C064397B,ActionType=1025,Source=BinaryData,Target=InstallPerfMon,)
MSI (s) (7C:48) [15:59:18:152]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSI8F.tmp, Entrypoint: InstallPerfMon