在连接字符串C#中指定Sql Server架构

时间:2016-09-26 09:23:57

标签: c# sql-server schema connection-string

我有一个控制台应用程序,它连接到Sql Server并获取一些值。我在Select(dbo)中有Schema:

        var ds = new DataTable("test");
        var connSqlRemoto = new SqlConnection("Server=myserverIP;Database=myDataBase;User Id=user;Password=pass;Integrated Security=False;Connection Timeout=60");
        connSqlRemoto.Open();
        var nombreBbdd = connSqlRemoto.Database;
        var daASqlRemoto = new SqlDataAdapter();
        var cmdSqlRemoto = new SqlCommand("SELECT * FROM " + nombreBbdd + ".dbo.myTable;", connSqlRemoto);
        cmdSqlRemoto.CommandTimeout = 1200;
        cmdSqlRemoto.Parameters.Clear();
        daASqlRemoto.SelectCommand = cmdSqlRemoto;
        daASqlRemoto.Fill(ds);

我想要Schema是动态的。所以: 是否可以在连接字符串中传递Schema? 这样的事情不起作用:

 Server=myserverIP;Database=myDataBase/dbo;User Id=user;Password=pass;Integrated Security=False;Connection Timeout=60

Server=myserverIP;Database=myDataBase.otherSchema;User Id=user;Password=pass;Integrated Security=False;Connection Timeout=60

感谢。

2 个答案:

答案 0 :(得分:1)

没有。您无法使用连接字符串传递架构。但是你可以像这样在sqlcommand中传递模式。

var schema=".dbo." -- you can set it globally or can change dynamically
cmdSqlRemoto = new SqlCommand("SELECT * FROM " + nombreBbdd + schema + "myTable;", connSqlRemoto);

答案 1 :(得分:1)

实现每个连接架构选择的最简单方法可能是将架构映射到用户,并使用正确的用户连接到数据库。这意味着他们将自动查询其默认架构。