Peter Larsson Blog

Patron Saint of Lost Yaks

Strange happening

I had a strange scenario today and I can't reproduce it.

I changed current database to adventureworks and ran following code


SET         @SQL = 'SELECT  DB_NAME()'

EXEC        sp_executesql @SQL
EXEC        (@SQL)

The sp_executesql statement returned "master" and exec statement returned "adventureworks".
Anyone knows why?

Legacy Comments

Jerry Hung
re: Strange happening
I tried it in SQL 2005 and SQL 2008, no issue (both displayed AdventureWorks)

That is quite strange..

Nathan Skerl
re: Strange happening
You sure you didnt exec master..sp_executesql @SQL by mistake?

K. Brian Kelley
re: Strange happening
In 2005 I can only reproduce if I use master..sp_executesql.

Bill Graziano
re: Strange happening
Do you have a proxy account setup that might have a different default database? Do they both use the same proxy account? Can you run a trace that captures some detail?

re: Strange happening
The thing is that I can't reproduce it now, but yesterday while in same connection I could reproduce it over and over again. When I finally closed the query window and opened a new one, I couldn't reproduce it.

I have checked my query log for SSMSToolsPack, and no, the sp_executesql did not have "master.." prefix.

I can get the same result now when using "master.." in front of sp_executesql (thanks nathan and brian).

Let's put this aside in the "freak accidents" drawer.

Rajkumar Rajput
re: Strange happening
Are u sure the db had been changed when u exeuted the query? Because i checked both statement and giving the same result "Adventureworks".