2015-07-20 6 views
2

Lors de l'exécution une des commandes suivantes:requêtes en cours en utilisant osql

osql -E -S ComputerName\InstanceName 
osql -E -S ComputerName\InstanceName -i MyScript.sql -o MyOutput.rpt 
osql -E -q "SELECT * FROM Northwind.dbo.Shippers" 
osql -E -Q "SELECT * FROM Northwind.dbo.Shippers" -o MyOutput.rpt 

Je reçois l'erreur suivante:

[SQL Server Native Client 10.0]SQL Server Network Interfaces: Connection 
string is not valid [87]. 
[SQL Server Native Client 10.0]Login timeout expired 
[SQL Server Native Client 10.0]A network-related or instance-specific error 
has occurred while establishing a connection to SQL Server. Server is not 
found or not accessible. Check if instance name is correct and if SQL Server 
is configured to allow remote connections. For more information see SQL Server 
Books Online. 

Cependant, je peux, sans problème pour se connecter et exécuter SELECT requêtes de SSMS.

Comment exécuter des requêtes sur SQL Server 2008 à l'aide d'osql?

+0

[Étapes pour résoudre les problèmes de connectivité SQL] (http://blogs.msdn.com/b/sql_protocols/ar chive/2008/04/30/steps-to-troubleshootinghoot-connectivity-issues.aspx) –

+0

Encore mieux: Google.com –

Répondre

2

Avez-vous votre compte connecté configuré en tant qu'utilisateur dans SQL Server?

Je travaille habituellement avec des comptes spécifiques et les connexions SQL Server au lieu de logins de confiance, puis simplement la base de données précise les coordonnées sur la ligne de commande avec les S, -D, -U et -P:

osql -S %SERVERNAME% -U %USERNAME% -P %PASSWORD% -d %DBNAME% 

par exemple, si votre nom de serveur est MyServer \ SQL2008 et votre nom d'utilisateur est Foo et votre mot de passe est Bar et votre base de données est MyDB, alors vous pouvez utiliser:

osql -S MyServer\SQL2008 -U Foo -P Bar -d MyDB 

et continuez ensuite avec le reste de vos options après cela.

Si vous voulez vraiment utiliser votre connexion de confiance, vous devez aller à SQL Server Management Studio et vous assurer que votre connexion est Veuves en cours ajouté en tant qu'utilisateur et donné des autorisations appropriées à votre base de données, etc.

Dans SSMS, connectez-vous à votre serveur manuellement (l'utilisateur 'sa' et le mot de passe peut-être), puis développez le nœud "Sécurité" et regardez les connexions. Si votre utilisateur Windows actuellement connecté n'est pas répertorié, vous devez cliquer avec le bouton droit de la souris, ajouter une nouvelle connexion et ajouter votre utilisateur actuel.

Ensuite, vous devriez être en mesure de fonctionner avec une connexion sécurisée.

+0

Merci. Je n'ai pas les droits d'administrateur. Si je suis en mesure de choisir parmi les SSMS, pourquoi cela ne fonctionnerait-il pas avec osql? –

1

Vous devez exécuter toutes les commandes en une seule ligne comme celui-ci

osql -E -S ComputerName\InstanceName -i MyScript.sql -o MyOutput.rpt 

ou

osql -E -S ComputerName\InstanceName -Q "SELECT * FROM Northwind.dbo.Shippers" -o MyOutput.rpt

Maintenant, vous devez voir si vous pouvez vous connecter à SQL Server ou si le service est en cours ou même si le protocole TCP/IP est activé

+0

Il semble que le service de navigateur du serveur SQL ne fonctionne pas. Cela pourrait-il être le problème? Je n'ai pas les autorisations pour démarrer le service –

+0

SQL Server Browser fonctionne avec les instances nommées SQL et les installations de cluster. – Krismorte