2010-01-04 6 views
0

J'ai un problème, cela me rend vraiment fou. Tout d'abord, je dois admettre que la plupart du travail a été fait par un collègue, qui n'est plus disponible.Problème lors de l'accès à SQL Server à partir du partage réseau après la réinstallation de SQL Server

Avant de réinstaller la plate-forme MSSQL Server, le tout ressemblait à ça:

  • Quelqu'un a développé un petit programme .Net C# qui se connecte au serveur SQL, qui se trouve sur un partage réseau. Tout fonctionnait

Nous avons dû réinstaller le serveur (Windows + SQL Server) et depuis ce moment, si le programme est exécuté à partir de ce partage réseau, je reçois l'erreur suivante:

"Unhandled Exception: System.Security.SecurityException: Request for the permissi on of type 'System.Data.SqlClient.SqlClientPermission, System.Data, ......"

Si je exécutez le programme localement à partir de l'ordinateur où se trouvent les partages, cela fonctionne - donc je suppose que tous les problèmes de sécurité ont été réglés directement sur SQL Server. Mais il doit y avoir un problème, car cela a fonctionné correctement avant la réinstallation.

Est-ce que cela a du sens pour quelqu'un? Ou des idées pour résoudre ce problème?

Modifier: Message d'erreur affiché ci-dessous. Le programme est appelé par un script batch.

C:\Projekte\Tool>\\server\c$\Projekte\Tool\ToolRea 
der.exe 

Unhandled Exception: System.Security.SecurityException: Request for the permissi 
on of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0. 
0.0, Culture=neutral, PublicKeyToken=a76a5c5b1932e089' failed. 
    at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMa 
rk& stackMark, Boolean isPermSet) 
    at System.Security.PermissionSet.Demand() 
    at System.Data.Common.DbConnectionOptions.DemandPermission() 
    at System.Data.SqlClient.SqlConnection.PermissionDemand() 
    at System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection o 
uterConnection) 
    at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection ou 
terConnection, DbConnectionFactory connectionFactory) 
    at System.Data.SqlClient.SqlConnection.Open() 
    at System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionU 
ser user) 
    at System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe() 
    at System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode() 
    at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider 
.Execute(Expression query) 
    at System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.Get 
Enumerator() 
    at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 
    at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 
    at System.Data.Linq.Table`1.DeleteAllOnSubmit[TSubEntity](IEnumerable`1 entit 
ies) 
    at ToolReader.DataAccessLayer.ToolInfoDAO.deleteAllEntries(
) 
    at ToolReader.ToolReader.Main(String[] args) 
The action that failed was: 
Demand 
The type of the first permission that failed was: 
System.Data.SqlClient.SqlClientPermission 
The first permission that failed was: 
<IPermission class="System.Data.SqlClient.SqlClientPermission, System.Data, Vers 
ion=2.0.0.0, Culture=neutral, PublicKeyToken=a76a5c5b1932e089" 
version="1" 
AllowBlankPassword="False"> 
<add ConnectionString="Data Source=sqlserver\SQLEXPRESS;Initial Catalog=ToolDB;Integrated Security=True" 
KeyRestrictions="" 
KeyRestrictionBehavior="AllowOnly"/> 
</IPermission> 

The demand was for: 
<PermissionSet class="System.Security.PermissionSet" 
version="1"> 
<IPermission class="System.Data.SqlClient.SqlClientPermission, System.Data, Vers 
ion=2.0.0.0, Culture=neutral, PublicKeyToken=a76a5c5b1932e089" 
version="1" 
AllowBlankPassword="False"> 
<add ConnectionString="Data Source=sqlserver\SQLEXPRESS;Initial Catalog=ToolDB;Integrated Security=True" 
KeyRestrictions="" 
KeyRestrictionBehavior="AllowOnly"/> 
</IPermission> 
</PermissionSet> 

The granted set of the failing assembly was: 
<PermissionSet class="System.Security.PermissionSet" 
version="1"> 
<IPermission class="System.Security.Permissions.EnvironmentPermission, mscorlib, 
Version=2.0.0.0, Culture=neutral, PublicKeyToken=a76a5c5b1932e089" 
version="1" 
Read="USERNAME"/> 
<IPermission class="System.Security.Permissions.FileDialogPermission, mscorlib, 
Version=2.0.0.0, Culture=neutral, PublicKeyToken=a76a5c5b1932e089" 
version="1" 
Unrestricted="true"/> 
<IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Vers 
ion=2.0.0.0, Culture=neutral, PublicKeyToken=a76a5c5b1932e089" 
version="1" 
Read="\\server\C$\Projekte\Tool\" 
PathDiscovery="\\server\C$\Projekte\Tool\"/> 
<IPermission class="System.Security.Permissions.IsolatedStorageFilePermission, m 
scorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=a76a5c5b1932e089" 
version="1" 
Allowed="AssemblyIsolationByUser" 
UserQuota="9223372036854775807" 
Expiry="9223372036854775807" 
Permanent="True"/> 
<IPermission class="System.Security.Permissions.ReflectionPermission, mscorlib, 
Version=2.0.0.0, Culture=neutral, PublicKeyToken=a76a5c5b1932e089" 
version="1" 
Flags="ReflectionEmit"/> 
<IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Ve 
rsion=2.0.0.0, Culture=neutral, PublicKeyToken=a76a5c5b1932e089" 
version="1" 
Flags="Assertion, Execution, BindingRedirects"/> 
<IPermission class="System.Security.Permissions.UIPermission, mscorlib, Version= 
2.0.0.0, Culture=neutral, PublicKeyToken=a76a5c5b1932e089" 
version="1" 
Unrestricted="true"/> 
<IPermission class="System.Security.Permissions.UrlIdentityPermission, mscorlib, 
Version=2.0.0.0, Culture=neutral, PublicKeyToken=a76a5c5b1932e089" 
version="1" 
Url="file://server/c$/Projekte/Tool/ToolReader.exe"/> 
<IPermission class="System.Security.Permissions.ZoneIdentityPermission, mscorlib 
, Version=2.0.0.0, Culture=neutral, PublicKeyToken=a76a5c5b1932e089" 
version="1" 
Zone="Intranet"/> 
<IPermission class="System.Net.DnsPermission, System, Version=2.0.0.0, Culture=n 
eutral, PublicKeyToken=a76a5c5b1932e089" 
version="1" 
Unrestricted="true"/> 
<IPermission class="System.Drawing.Printing.PrintingPermission, System.Drawing, 
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
version="1" 
Level="DefaultPrinting"/> 
</PermissionSet> 

The assembly or AppDomain that failed was: 
ToolReader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 
The method that caused the failure was: 
Void deleteAllEntries() 
The Zone of the assembly that failed was: 
Intranet 
The Url of the assembly that failed was: 
file://server/c$/Projekte/Tool/ToolReader.exe 
+0

Veuillez poster le message d'erreur complet (en éditant votre message, ou en commentant ici) - cela nous aidera vraiment à déterminer la cause du problème. En un mot c'est un problème SQL Server ou (plus probablement) un problème avec la façon dont le programme C# est configuré: par défaut, il n'est pas possible d'exécuter des programmes C# à partir de partages réseau. –

Répondre

0

Ceci est un .NET-Security-Issue. Il traite les applications à partir d'un partage réseau différent d'un dossier local.

En ce moment je ne suis pas sûr de la façon dont nous avons réparé cela dans le passé, mais essayez ceci: Sur l'ordinateur appelant (pas le serveur) établissez une confiance manuelle à ce programme (= Assemblée) avec l'assistant .Net à partir du panneau de contrôle, en utilisant \ server \ share \ program pour la navigation.

Je pense que vous pouvez le faire fonctionner en modifiant les niveaux de sécurité/zones.

+0

Merci pour votre réponse. Je l'avais aussi foutu. J'ai déjà changé toutes les zones .Net en FullTrusted, mais cela n'a pas affecté le problème. Et pour rappeler à tout le monde: ça a fonctionné avant, on n'a jamais touché au programme, seul le SQL Server ... – powerbar

Questions connexes