September 1, 2005 at 6:31 pm
Hello folks,
I am trying to insert the results from this execution to a table:
insert into report1
exec master.dbo.sp_msforeachdb
"USE [?]
BEGIN
SELECT '?'
EXEC sp_helprolemember
END"
I get 4 results which are the: dbname, dbrole, membername and membersid.
My table is:
CREATE TABLE report1
( dbname varchar(20),
dbrole varchar(20),
memname varchar(20),
memsid smallint
)
The error is:
Server: Msg 213, Level 16, State 7, Line 3
Insert Error: Column name or number of supplied values does not match table definition.
Thanks for your help.
Stevie
September 1, 2005 at 8:14 pm
When you execute,
exec master.dbo.sp_msforeachdb "USE [?] BEGIN SELECT '?' EXEC sp_helprolemember END"
by itself in Query Analyzer you will see that seperate resultsets are returned. You can't insert seperate resultsets into a table in one query.
Instead you should have the insert inside the quotes so it is executed once for each execution of sp_helprolemember.
EG:
CREATE TABLE ##report1 ( dbrole sysname, memname sysname NULL, memsid varbinary(85) NULL )exec master.dbo.sp_msforeachdb "USE [?] BEGIN insert into ##report1 (dbrole) values (db_name()) insert into ##report1 EXEC sp_helprolemember END"select * from ##report1drop table ##report1
NOTE: I've used a global temporary table in this script to test it on my system. It should work exactly the same if you use a three part object name in your create and insert statements. eg: dbname.owner.tablename
--------------------
Colt 45 - the original point and click interface
September 6, 2005 at 1:38 pm
Thanks Phil you saved me a lot of work =)
Viewing 3 posts - 1 through 2 (of 2 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy