![]() | |
![]() |
| | Thread Tools | Display Modes |
#11
| |||
| |||
|
|
Sammy, this is a syntax thing. VoidMsg = ''** void after 90 days **'ä This line is incorrect. It contains unbalanced quote marks. Just fix these up. Geoff |
#12
| |||
| |||
|
|
Incorrect syntax near the keyword 'DEALL DECLARE @sql nvarchar(MAX), |
|
Geoff After I added the ' I get the error as below Msg 156, Level 15, State 1, Line 37 Incorrect syntax near the keyword 'DEALL DECLARE @sql nvarchar(MAX), @db sysname, @sp_executesql nvarchar(512), @hastable bit SELECT @sql = 'update XBANKINFO set BankReqSig2 = ''1'', Signature1 = ''X:\SIGNATURES\NEOSPINE\SIGNER1\DDEAN1.BMP'', Signature1always = ''1'', Signature1Limit = ''0'', Signature2 = ''X:\SIGNATURES\NEOSPINE\SIGNER2\DBELL1.BMP'', Signature2Limit = ''0.01'', Signature2Valid = ''1'', Signature2ValidMsg = ''** Not valid without two signatures **'', Void = ''1'', VoidMsg = ''** void after 90 days **'' DECLARE dbcur CURSOR STATIC LOCAL FOR SELECT name FROM sys.databases OPEN dbcur WHILE 1 = 1 BEGIN FETCH dbcur INTO @db IF @@fetch_status <> 0 BREAK SELECT @sp_executesql = quotename(@db) + ..sp_executesql' EXEC @sp_executesql N'SELECT @id = object_name(''XBANKINFO'')', N'@id int OUTPUT', @hastable OUTPUT IF @hastable = 1 EXEC @sp_executesql @sql END DEALLOCATE dbcur OCATE'. I used the updated query as below "Geoff Schaller" <geoffx (AT) softxwareobjectives (DOT) com.au> wrote in message news:_MFVn.704$vD2.538 (AT) news-server (DOT) bigpond.net.au... Sammy, this is a syntax thing. VoidMsg = ''** void after 90 days **'ä This line is incorrect. It contains unbalanced quote marks. Just fix these up. Geoff |
#13
| |||
| |||
|
|
The problem is as below that I was getting with your solution. If you can help me that will be great |
|
Msg 102, Level 15, State 1, Line 15 Incorrect syntax near 'ä'. |
#14
| |||
| |||
|
|
Sorry, should have been, sp_msForEachDb 'Use [?] update XBANKINFO set BankReqSig2 = ''1'', Signature1 = ''X:\SIGNATURES\NEOSPINE\SIGNER1\DDEAN1.BMP'', Signature1always = ''1'', Signature1Limit = ''0'', Signature2 = ''X:\SIGNATURES\NEOSPINE\SIGNER2\DBELL1.BMP'', Signature2Limit = ''0.01'', Signature2Valid = ''1'', Signature2ValidMsg = ''** Not valid without two signatures **'', Void = ''1'', VoidMsg = ''** void after 90 days **''' Tom "Sammy" <s_commar (AT) hotmail (DOT) com> wrote in message news:906632BF-5979-41A7-91BC-4AD86F6B10F3 (AT) microsoft (DOT) com... Tom Thanks so much for this. However when I run this in test I only get error messages and it does not update the one db that has the tables. Only when I have this one db as the default db it updates the db but then it does not show any erorr messages implying that it only ran for the one db I would really appreciate your guidance on this. Thanks Sammy "Tom Cooper" <tomcooper (AT) comcast (DOT) net> wrote in message news:#3SW7UIFLHA.3732 (AT) TK2MSFTNGP02 (DOT) phx.gbl... First as always, carefully test any update before running in production. And make sure that you have adquate backups. Particularily for this update which will update every row in XBANKINFO for every database that has a table named XBANKINFO with those columns. Microsoft has a stored procedure named sp_msForEachDB which does this, it is undocumented, but works just fine. So you could do sp_msForEachDb 'update XBANKINFO set BankReqSig2 = ''1'', Signature1 = ''X:\SIGNATURES\NEOSPINE\SIGNER1\DDEAN1.BMP'', Signature1always = ''1'', Signature1Limit = ''0'', Signature2 = ''X:\SIGNATURES\NEOSPINE\SIGNER2\DBELL1.BMP'', Signature2Limit = ''0.01'', Signature2Valid = ''1'', Signature2ValidMsg = ''** Not valid without two signatures **'', Void = ''1'', VoidMsg = ''** void after 90 days **''' This will update every database (if the database does not have a table named XBANKINFO, the update for that database will error out, but that won't stop the process, it will just go on to the next database). And be very, very careful. Updates to every row of a table in every database frighten me. One mistake and you're going to have a lot of work undoing it. You probably want to do a begin tran before running the stored proc, then run a number of queries to make sure everything worked well (those queries need to be done in the same query window or you con do them in another query window if you use the READUNCOMMITED hint). When your sure it worked, go back to the original query window and do a commit. If anything went wrong, go back to the original query window and do a rollback. Tom "Sammy" <s_commar (AT) hotmail (DOT) com> wrote in message news:3BA7DD2A-C7CD-4F61-893B-AC51C768AC0B (AT) microsoft (DOT) com... I have about 230 databases on my sql server. Out of which 220 or so are Dynamics Databases on which I want to run the same standard query as below. I don't want to select each db individually and run the query. Is there any way that I can run the query on the 220 dbs without selecting each one individually. The query should ignore or bomb out on the remaining 10 dbs as they don't have the table mentioned in the query below update XBANKINFO set BankReqSig2 = '1', Signature1 = 'X:\SIGNATURES\NEOSPINE\SIGNER1\DDEAN1.BMP', Signature1always = '1', Signature1Limit = '0', Signature2 = 'X:\SIGNATURES\NEOSPINE\SIGNER2\DBELL1.BMP', Signature2Limit = '0.01', Signature2Valid = '1', Signature2ValidMsg = '** Not valid without two signatures **', Void = '1', VoidMsg = '** void after 90 days **' I would really appreciate help on how to run this on the multiple dbs without having to go through each db Thanks very much Sammy C |
#15
| ||||||||
| ||||||||
|
|
On Friday, June 25, 2010 12:03 PM Sammy wrote: I have about 230 databases on my sql server. Out of which 220 or so are Dynamics Databases on which I want to run the same standard query as below. I do not want to select each db individually and run the query. Is there any way that I can run the query on the 220 dbs without selecting each one individually. The query should ignore or bomb out on the remaining 10 dbs as they do not have the table mentioned in the query below update XBANKINFO set BankReqSig2 = '1', Signature1 = 'X:\SIGNATURES\NEOSPINE\SIGNER1\DDEAN1.BMP', Signature1always = '1', Signature1Limit = '0', Signature2 = 'X:\SIGNATURES\NEOSPINE\SIGNER2\DBELL1.BMP', Signature2Limit = '0.01', Signature2Valid = '1', Signature2ValidMsg = '** Not valid without two signatures **', Void = '1', VoidMsg = '** void after 90 days **' I would really appreciate help on how to run this on the multiple dbs without having to go through each db Thanks very much Sammy C |
|
On Friday, June 25, 2010 12:41 PM Tom Cooper wrote: First as always, carefully test any update before running in production. And make sure that you have adquate backups. Particularily for this update which will update every row in XBANKINFO for every database that has a table named XBANKINFO with those columns. Microsoft has a stored procedure named sp_msForEachDB which does this, it is undocumented, but works just fine. So you could do sp_msForEachDb 'update XBANKINFO set BankReqSig2 = ''1'', Signature1 = ''X:\SIGNATURES\NEOSPINE\SIGNER1\DDEAN1.BMP'', Signature1always = ''1'', Signature1Limit = ''0'', Signature2 = ''X:\SIGNATURES\NEOSPINE\SIGNER2\DBELL1.BMP'', Signature2Limit = ''0.01'', Signature2Valid = ''1'', Signature2ValidMsg = ''** Not valid without two signatures **'', Void = ''1'', VoidMsg = ''** void after 90 days **''' This will update every database (if the database does not have a table named XBANKINFO, the update for that database will error out, but that will not stop the process, it will just go on to the next database). And be very, very careful. Updates to every row of a table in every database frighten me. One mistake and you are going to have a lot of work undoing it. You probably want to do a begin tran before running the stored proc, then run a number of queries to make sure everything worked well (those queries need to be done in the same query window or you con do them in another query window if you use the READUNCOMMITED hint). When your sure it worked, go back to the original query window and do a commit. If anything went wrong, go back to the original query window and do a rollback. Tom |
|
On Friday, June 25, 2010 12:41 PM Scott Morris wrote: Answered in another newsgroup. Please do not post the same message to multiple newsgroups independently. |
|
On Saturday, June 26, 2010 9:47 PM Sammy wrote: Why should I not post it. I was looking for a better way of doing what I needed than I got in the other newsgroup. So what is your problem if I post it in multiple newsgroups. |
|
On Saturday, June 26, 2010 10:53 PM Sammy wrote: Tom Thanks so much for this. However when I run this in test I only get error messages and it does not update the one db that has the tables. Only when I have this one db as the default db it updates the db but then it does not show any erorr messages implying that it only ran for the one db I would really appreciate your guidance on this. Thanks Sammy |
|
On Sunday, June 27, 2010 3:41 AM Tom Cooper wrote: Sorry, should have been, sp_msForEachDb 'Use [?] update XBANKINFO set BankReqSig2 = ''1'', Signature1 = ''X:\SIGNATURES\NEOSPINE\SIGNER1\DDEAN1.BMP'', Signature1always = ''1'', Signature1Limit = ''0'', Signature2 = ''X:\SIGNATURES\NEOSPINE\SIGNER2\DBELL1.BMP'', Signature2Limit = ''0.01'', Signature2Valid = ''1'', Signature2ValidMsg = ''** Not valid without two signatures **'', Void = ''1'', VoidMsg = ''** void after 90 days **''' Tom |
|
On Sunday, June 27, 2010 5:53 AM Sammy wrote: Erland The problem is as below that I was getting with your solution. If you can help me that will be great Msg 102, Level 15, State 1, Line 15 Incorrect syntax near '?'. Msg 102, Level 15, State 1, Line 28 Incorrect syntax near ' EXEC @sp_executesql N'. Msg 102, Level 15, State 1, Line 30 Incorrect syntax near 'XBANKINFO'. Msg 105, Level 15, State 1, Line 31 Unclosed quotation mark after the character string ', @hastable OUTPUT IF @hastable = 1 EXEC @sp_executesql @sql END DEALLOCATE dbcur '. |
|
On Monday, June 28, 2010 1:05 PM Sammy wrote: Thanks so much Tom. That worked perfectly. Really appreciate your help on this |
![]() |
| Thread Tools | |
| Display Modes | |
| |