Как я могу изменить схему базы данных, используя Statement.execute () в Java (и SQL Server)? - PullRequest
1 голос
/ 11 ноября 2008

Мне нужно выполнить системную хранимую процедуру SQL Server программно, и, поскольку она выполняется в текущей схеме, мне нужно изменить ее на лету.

Как это

Оператор st = connection.createStatement (); st.execute ("EXEC SP_ADDUSER '', ''");

Но SP_ADDUSER выполняется только на текущей схеме, установленной для соединения, поэтому, если бы я хотел создать пользователей в различных схемах, мне нужно было бы изменить это, и это то, что я ищу.

Ответы [ 2 ]

1 голос
/ 11 ноября 2008

Я не верю, что можно изменить, на какую базу данных указывает соединение.

Возможно, вам потребуется создать отдельный источник данных / соединение для каждой базы данных (схемы).

0 голосов
/ 11 ноября 2008

EXEC <DatabaseName>..sp_adduser можно запустить из соединения с любой базой данных (даже, скажем, master). Соединение не будет затронуто.

Например, в моей системе работает нормально:

USE master
EXEC sp_addlogin 'test1'
EXEC SandBox..sp_adduser 'test1'

То же самое работает через клиента. Изменяет ли ваше клиентское соединение ваш SQL?

using System;
using System.Data.SqlClient;

namespace TestUse
{
    class Program
    {
        static void Main(string[] args)
        {
            SqlConnection cn = new SqlConnection("Server=(local);Database=master;Trusted_Connection=True;");
            cn.Open();
            SqlCommand cmd = new SqlCommand("USE master; EXEC sp_addlogin 'test1'; EXEC SandBox..sp_adduser 'test1'", cn);
            cmd.ExecuteNonQuery();
            cn.Close();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...