C# 理解连接字符串属性

C# 理解连接字符串属性,c#,.net,connection-string,C#,.net,Connection String,我是C#和所有.net的新手。我正在尝试使用测试控制台应用程序测试我的Nhibernate配置 这是我的测试控制台应用程序 class Program { static void Main(string[] args) { try { NHibernateBase NHB = new NHibernateBase(); NHB.Initialize("NHibernate.GuitarStore");

我是C#和所有.net的新手。我正在尝试使用测试控制台应用程序测试我的Nhibernate配置

这是我的测试控制台应用程序

class Program
{
    static void Main(string[] args)
    {
        try
        {
            NHibernateBase NHB = new NHibernateBase();
            NHB.Initialize("NHibernate.GuitarStore");
            System.Console.WriteLine("NHibernate.GuitarStore assembly initialized.");
            System.Console.ReadLine();
        }
        catch (Exception ex)
        {
            string Message = ex.Message;
            if (ex.InnerException != null)
            {
                Message += " - InnerExcepetion: " + ex.InnerException.Message;
             }
        System.Console.WriteLine();
        System.Console.WriteLine("***** ERROR *****");
        System.Console.WriteLine(Message);
        System.Console.WriteLine();
        System.Console.ReadLine();
        }

        }
    }
当我运行上述程序时,我得到错误:

***** ERROR *****
Login failed for user 'BUGZILLA\Silon'.
这是我的app.config中的连接字符串

connectionString="Data Source=localhost;Initial Catalog=myGuitarStore;Integrated Security=True
我认为这与连接字符串的集成安全部分有关

问题是我不理解连接字符串中的属性(以及它们的含义),而且我似乎找不到任何足够容易解释它们的文章

----以防您需要它来理解问题,这里是NHibernateBase类

 public class NHibernateBase
{
    private static Configuration Configuration { get; set; }
    protected static ISessionFactory SessionFactory { get; set; }
    private static ISession session = null;
    private static IStatelessSession statelessSession = null;

    public static Configuration ConfigureNHibernate(string assembly)
    {
        Configuration = new Configuration();
        Configuration.AddAssembly(assembly);
        return Configuration;
    }

    public void Initialize(string assembly)
    {
        Configuration = ConfigureNHibernate(assembly);
        SessionFactory = Configuration.BuildSessionFactory();
    }

    public static ISession Session
    {
        get
        {
            if (session == null)
            {
                session = SessionFactory.OpenSession();
            }
            return session;
        }
    }

    public static IStatelessSession StatelessSession
    {
        get
        {
            if (statelessSession == null)
            {
                statelessSession = SessionFactory.OpenStatelessSession();
            }
            return statelessSession;
        }
    }

    public IList<T> ExecuteICriteria<T>()
    {
        using (ITransaction transaction = Session.BeginTransaction())
        {
            try
            {
                IList<T> result = Session.CreateCriteria(typeof(T)).List<T>();
                transaction.Commit();
                return result;
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                throw ex;
            }
        }
    }
公共类NHibernateBase
{
私有静态配置{get;set;}
受保护的静态ISessionFactory会话工厂{get;set;}
私有静态ISession会话=null;
私有静态ISTALESSESCESSION无状态会话=null;
公共静态配置ConfigureNHibernate(字符串程序集)
{
配置=新配置();
配置.AddAssembly(assembly);
返回配置;
}
公共void初始化(字符串程序集)
{
配置=配置纤维(组件);
SessionFactory=Configuration.BuildSessionFactory();
}
公众休会期
{
得到
{
if(会话==null)
{
session=SessionFactory.OpenSession();
}
返回会议;
}
}
公共静态远程会话无状态会话
{
得到
{
if(无状态会话==null)
{
无状态会话=SessionFactory.openstatesession();
}
返回会议;
}
}
公共IList执行标准()
{
使用(ITransaction transaction=Session.BeginTransaction())
{
尝试
{
IList result=Session.CreateCriteria(typeof(T)).List();
Commit();
返回结果;
}
捕获(例外情况除外)
{
transaction.Rollback();
掷骰子;
}
}
}

由于不包括
用户名
密码
,连接字符串在尝试连接到数据库时正在传递当前登录用户的凭据。请确保
Bugzilla\silon
有权访问您试图使用nHibernate查询的表


否则,您可以在连接字符串中提供SQL Server登录帐户(不同于AD登录)使用
用户名=
密码=
密钥。

Integrated Security=True
仅表示您正在使用Windows身份验证进行身份验证,而不是通过sql server本身传递您的用户id和密码并进行身份验证。如果您没有进行Windows身份验证,则只需传递用户id即可和密码作为连接字符串的一部分,有关其他连接字符串格式的工作,请参阅


您还可以看到这篇文章,它描述了每个连接字符串属性,连接到数据库的方式(即Windows auth与SQL Server auth)通常是在连接字符串中指定的。现在,您正在尝试连接运行应用程序的用户的Windows凭据(没有密码)。我认为您最好先阅读SQL Server提供的安全选项,然后再阅读连接字符串。您需要知道数据库是如何设置的,以便为其创建工作连接字符串

这里有一个指向MSDN的链接,其中包含一些有关SQL Server安全设置的信息


还考虑了如何与MSMSs连接,你提供了什么证书?你在哪个领域?你使用Windows Autho吗?如果你能找到连接的方式,你可以很容易地创建一个连接字符串的连接方式——只需找到一个例子并用适当的值编辑它。安全性为假,并添加了用户id和密码…现在一切都好了。谢谢你的链接。我也发现了这个链接,这对我来说更容易理解。谢谢你的链接。我很感激。