J'ai créé un certain nombre de rôles d'application et automatiquement la database SQL Server a créé ce qui suit:
declare @idx as int declare @randomPwd as nvarchar(64) declare @rnd as float select @idx = 0 select @randomPwd = N'' select @rnd = rand((@@CPU_BUSY % 100) + ((@@IDLE % 100) * 100) + (DATEPART(ss, GETDATE()) * 10000) + ((cast(DATEPART(ms, GETDATE()) as int) % 100) * 1000000)) while @idx < 64 begin select @randomPwd = @randomPwd + char((cast((@rnd * 83) as int) + 43)) select @idx = @idx + 1 select @rnd = rand() end declare @statement nvarchar(4000) select @statement = N'CREATE APPLICATION ROLE [AppRole_01] WITH DEFAULT_SCHEMA = [AppRole_01], ' + N'PASSWORD = N' + QUOTENAME(@randomPwd,'''') EXEC dbo.sp_executesql @statement GO
Maintenant, je vois EXEC dbo.sp_executesql @statement
et je ne peux pas comprendre
sp_executesql
particulier dbo.sp_executesql
Y a-t-il quelqu'un pour me guider à travers ce problème?
C'est un système SP. Il est livré avec vous SQL Server.
http://technet.microsoft.com/en-us/library/aa933299(v=sql.80).aspx
La requête que vous avez publiée crée un SQL dynamic et l'exécute.
Edit Tout outil visuel que vous utilisez pour gérer votre DB est, derrière les rideaux, créer ce type de command et l'envoyer au moteur (et fait-il tout le travail tout le time). Vous pouvez le voir en exécutant un profileur.
Vous ne pouvez pas find ce système SP et c'est bon parce que de cette façon, il n'est pas facile de pirater le SGBDR et de faire des choses désagréables. N'essayez même pas de changer les choses en mettant à jour / altérant les objects système.