Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 连接到Microsoft SQL server时出错_C#_Sql_Sql Server - Fatal编程技术网

C# 连接到Microsoft SQL server时出错

C# 连接到Microsoft SQL server时出错,c#,sql,sql-server,C#,Sql,Sql Server,下面是我的代码的简明版本,因为它与db访问有关 using System; using System.Collections.Generic; using System.Data.SqlClient; namespace DataAccess { public class DbConnection { public string connString = "Data Source=[Insert IP];Initial Catalog=MOSAIQ;Persist Securit

下面是我的代码的简明版本,因为它与db访问有关

using System;
using System.Collections.Generic;
using System.Data.SqlClient;

namespace DataAccess
{
   public class DbConnection
{
    public string connString = "Data Source=[Insert IP];Initial Catalog=MOSAIQ;Persist Security Info=True;User ID=[Insert User];Password=[Insert Password]";

    public void CreateConnection()
    {
        using (SqlConnection conn = new SqlConnection(connString))
        {
            try
            {
                conn.Open();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
    }
}
出于安全原因,我已删除IP和用户凭据。也就是说,我直接从成功连接到我的数据库的服务器资源管理器的属性复制了上面的连接字符串

执行
conn.Open()

很明显,验证过程中存在一个问题。提供的凭据是用于SQL身份验证的凭据

为什么我可以通过服务器资源管理器连接,但不能直接通过代码连接?Visual Studio为我做了什么,而我自己似乎做不到

端口是开放的,防火墙不是问题。我被难住了,作为这件事的新手,我希望得到进一步的指导

我正在尝试使用Visual Studio的2013连接到SQL Server 2008 R2

作为测试,尝试使用

如果您这样做并且仍然遇到错误,那么继续测试网络

<add name="RM_V1.0CS1" connectionString="Data Source=SERVER;Initial Catalog=DB;User ID=sa;Password=Password" providerName="System.Data.SqlClient" />

编辑显式设置提供程序:


适用于可能遇到类似问题的人。我通过工作将解决方案保存在网络驱动器上。因为我从这个网络位置打开并运行解决方案的原因,我还不知道它使用的是我的windows凭据,而不是我传递给SQL server的SQL凭据。解决方案移动到本地工作站后,该方法按预期运行。任何关于更具体发生了什么的见解都会引起人们的兴趣。

SQL Server什么?企业快车?紧凑型?这可能会有所帮助:但首先要确保您的SQL server托管在IP 1.1.1.1下-这似乎不常见。我同意Ricardo的观点,1.1.1.1对我来说似乎非常奇怪。通过SQL MGT Studio登录时,是否输入1.1.1.1?输入要登录的内容。测试ODBC连接怎么样?这也行吗?(控制面板->管理工具->数据源(ODBC)->添加->从此处进行配置)。对于连接字符串中的内容,这可以使用吗?出于安全原因,他可能将实际IP替换为1.1.1.1。由于您是使用用户名和密码登录的,请确保服务器已设置为接受Windows身份验证和SQL身份验证。如果不是,那么在尝试连接时会出现错误。这也是-有太多的“它可能是什么”。就我在学习C#方面的知识而言,使用SqlConnectionStringBuilder类来确保强类型属性的正确放置是否有好处?只是试着遵循逻辑,也许当前连接字符串的解析方式可能是问题所在?大声输入我想这样做是有意义的,这个类将尝试减轻潜在的错误。当使用“SqlConnection”时,使用的默认提供程序是什么?当我使用服务器资源管理器查看已建立连接的高级属性时,它显示“Provider=SQLNCLI11”,我希望检查一下,因为在使用“SqlConnection”@TargetofGravity时,这不是我可以在连接字符串中指定的字段。是的,生成器应该消除任何错误的解析或键入。在阅读您的评论后,我认为问题在于供应商。尝试显式设置提供程序providerName=“System.Data.SqlClient”请参见上面的编辑最近发现,尽管我在连接字符串中指定了SQL凭据,但SQL server端的身份验证使用的是我的windows凭据,这导致了失败。有人知道为什么会发生这种情况,我可以在哪里做出改变吗?
<add name="RM_V1.0CS1" connectionString="Data Source=SERVER;Initial Catalog=DB;User ID=sa;Password=Password" providerName="System.Data.SqlClient" />