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

3

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

        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);

我希望模式是动态的。是否可以在连接字符串中传递模式? 类似这样的东西不起作用:

 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

谢谢。

不,这是在数据库用户级别完成的,而不是在连接字符串中完成的。 - Vishal Suthar
1
我希望Schema是动态的。那么:是否可以在连接字符串中传递Schema?当您在连接字符串中传入时,如何使Schema成为动态的呢? - TheGameiswar
因为这是一个接收不同连接字符串的应用程序。好的,谢谢。 - Za7pi
2个回答

2

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


1
不可以使用连接字符串传递模式,但是可以在sqlcommand中像这样传递模式。
var schema=".dbo." -- you can set it globally or can change dynamically
cmdSqlRemoto = new SqlCommand("SELECT * FROM " + nombreBbdd + schema + "myTable;", connSqlRemoto);

是的,但我已经在数据库的一个字段中得到了连接字符串,并且不想创建另一个字段... - Za7pi
在这种情况下,我建议您将模式与数据库一起保存在同一列中。例如,不要保存“dbname”,而是保存“dbname.dbo”。 - Deepak Sharma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接