Cross affichée sur MSDNdéployer l'application de base de données SQL Server Express LocalDB avec « clr activé »
Mon application utilise les fonctions personnalisées group_concat sur codeplex
Je reçois l'erreur suivante lors du démarrage de l'application sur la machine cible .
Execution of user code in the .NET framework is disabled. Enable clr enabled configuration option.
En supposant localdb est installé sur la machine cible, que puis-je faire pour activer clr ainsi installer? Sur ma machine, j'ai juste ouvert SSMS et exécuté le script là.
sp_configure 'clr enabled', 1; GO RECONFIGURE; GO
Cependant, SSMS ne sera pas installé sur la plupart des clients et je ne suis pas sûr de savoir comment faire de sorte que la base de données peut utiliser ces fonctions. Aucune suggestion?
EDIT: J'ai tenté de définir ceci dans C# à partir de l'application de deux manières différentes, mais les deux ont échoué.
public void EnableCLR(string ConnectionString)
{
using(SqlConnection con = new SqlConnection(ConnectionString))
{
using(SqlCommand cmd = new SqlCommand("sp_configure 'clr enabled', 1", con))
{
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
cmd.ExecuteNonQuery(); //Error: Unable to find stored procedure "sp_configure 'clr enabled', 1"
}
}
}
Alors j'ai essayé ce
public void EnableCLR(string ConnectionString)
{
using(SqlConnection con = new SqlConnection(ConnectionString))
{
using(SqlCommand cmd = new SqlCommand("sp_configure", con))
{
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
SqlParameter clrParam = new SqlParameter();
clrParam.ParameterName = "clr enabled";
clrParam.Value = 1;
cmd.Parameters.Add(clrParam);
cmd.ExecuteNonQuery(); //Error: @clr enabled is not a parameter for procedure sp_configure.
}
}
}
Le problème est que vous configurez '' CommandType' à StoredProcedure'. Tu n'as pas besoin de ça. Le type par défaut de 'Text' est bien dans ce but. Si vous utilisez le type 'StoredProcedure', vous pouvez uniquement spécifier le nom de la proc comme' CommandText', ce que vous avez fait correctement, mais vous devez ensuite définir le (s) nom (s) du paramètre correctement. Ici, vous avez utilisé la valeur du paramètre comme nom. Les noms de paramètres pour 'sp_configure' sont' configname' et 'configvalue' (n'ont pas besoin de' @ 'sur les noms de paramètres quand ils font le type' StoredProcedure'). Voir le document 'sp_configure': https://msdn.microsoft.com/en-us/library/ms188787.aspx –