Записи с меткой «SQL»

PostHeaderIcon Вставка данных в БД SQL из DataSet

string sqlConnectionString = "..."; // Строка подключения к БД SQL
string tableName = "..."; // Имя таблицы в DataSet
DataSet ds; // Заполненный данными DataSet

using (var con = new SqlConnection(sqlConnectionString))
{
	con.Open();
	using (var insertCmd = con.CreateCommand())
	{
		insertCmd.CommandText = "INSERT INTO Names (Number, Name) VALUES (@Number, @Name)";
		insertCmd.Parameters.Add("Number", SqlDbType.NVarChar, 100, "Номер договора");
		insertCmd.Parameters.Add("Name", SqlDbType.NVarChar, 100, "Клиент");
		using (var adapter = new SqlDataAdapter())
		{
			adapter.InsertCommand = insertCmd;
			adapter.Update(ds, tableName);
		}
	}
	con.Close();
}

Возможна ситуация, когда и данные есть и ошибок нет, но данные из DataSet в БД не попадают. Такое может быть, например, когда DataSet заполнялся с помощью метода Fill другого DataAdapter или для DataSet был выполнен метод AcceptChanges. В этом случае данные в DataSet помечены как не измененные, и DataAdapter не считает нужным что-то с ними делать.

В случае с заполнением DataSet с помощью метода Fill? для решения проблемы, необходимо добавить перед вызовом метода Fill строку da.AcceptChangesDuringFill = false; (где da – экземпляр DataAdapter).

PostHeaderIcon Подключение к удаленному SQL-серверу из SQL-запроса

-- Отключение от удаленного сервера
EXEC sp_droplinkedsrvlogin 'MyRemoteServer', NULL
GO

-- Подключение удаленного сервера
IF NOT EXISTS(SELECT name FROM sys.servers WHERE name = 'MyRemoteServer')
	EXEC sp_addlinkedserver 'MyRemoteServer', N'SQL Server'
GO

-- Авторизация на удаленном сервере
EXEC sp_addlinkedsrvlogin
   @rmtsrvname = 'MyRemoteServer',
   @useself = 'false',
   @rmtuser = 'MyRemoteServerUserName',
   @rmtpassword = 'MyRemoteServerUserPassword'
GO

-- Выполнение запроса к удаленной базе
SELECT  * FROM MyRemoteServer.master.dbo.MyTable