Поскажите плиз , у меня версия oracle 10.2.0.3.0 как конвертировать автомотически типы данных в sql 2005 (пробовал sql import and export wizard в атомотическом режиме не конвертирует типы данных).
» Microsoft SQL Server
DemianZ
Что еще за типы данных?
Что еще за типы данных?
в базе oracle имеются специфические типы данных : long_row , row аналоги в sql - text
DemianZ
Я сам не пробовал, но может поможет...
http://www.microsoft.com/sqlserver/2005/en/us/migration-oracle.aspx
Я сам не пробовал, но может поможет...
http://www.microsoft.com/sqlserver/2005/en/us/migration-oracle.aspx
такое чувство , что данное приложение дает переместить базу с sql 2005 на 2000 и обратно...
afiget
Конечно пробовал. Проблема в том что не хочет руский текст в rtf искать.
Конечно пробовал. Проблема в том что не хочет руский текст в rtf искать.
Microsoft SQL Server 2008, в нем БД, есть таблица, внутри несколько тыс. строк, 7 столбцов. Задача: ограничить доступ на запись к одной из строк (либо к конкретной ячейке, не важно) в этой таблице, оставив ей право на чтение.
Гуглил, нашел что-то вроде row-level security, но не продвинулся. Просьба помочь!
Гуглил, нашел что-то вроде row-level security, но не продвинулся. Просьба помочь!
magazinus
Как средствами SQL Server не знаю, но ...
В свое время реализовали программно для ограничения доступа к строке: Каждой строке назначается рейтинг (например, 1 - чтение, 3 - запись) у пользователя тоже назначался рейтинг (по правам доступа): например, 0 - доступа нет, 2 - чтение и 4 - полный доступ ... ну и при запросе естесно все это дело сравнивалось ...
Как средствами SQL Server не знаю, но ...
В свое время реализовали программно для ограничения доступа к строке: Каждой строке назначается рейтинг (например, 1 - чтение, 3 - запись) у пользователя тоже назначался рейтинг (по правам доступа): например, 0 - доступа нет, 2 - чтение и 4 - полный доступ ... ну и при запросе естесно все это дело сравнивалось ...
magazinus
По способу BlackVetal хорошо. Собственно, его способ и есть row-level security
http://technet.microsoft.com/en-us/library/cc966395.aspx
Вот еще один
Все строки, что должны быть залоканы, выносим в отдельный table идентичный по структуре оригинальному table. Назначаем table-копии права Read Only
В Select делаем Union этих двух table
По способу BlackVetal хорошо. Собственно, его способ и есть row-level security
http://technet.microsoft.com/en-us/library/cc966395.aspx
Вот еще один
Все строки, что должны быть залоканы, выносим в отдельный table идентичный по структуре оригинальному table. Назначаем table-копии права Read Only
В Select делаем Union этих двух table
заранее извиняюсь, если не в том месте тема. можете перенести, но только сообщением на е-мейл уведомите ссылкой.
доброго времени суток, уважаемые жители форума. вопрос следующий. прочитал несколько книжек по c# 2005, в каждой из них было написано, что для того, чтобы соединиться с sql server-ом через приложение, написанное на c#, надо добавить на форму sqldataadapter и написать некоторые строчки кода... ну и т.п. открыл свою студию 2008 и увидел, что в винформах этого нет. тогда в сети нашёл способ как это всё описать кодом.
вот, что у меня вышло:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace sql
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("select LastName, FirstName from Persons");
myReader = myCommand.ExecuteReader();
while (myReader.Read()) richTextBox1.Text = myReader.ToString();
}
private void button2_Click(object sender, EventArgs e)
{
SqlConnection myConnection = new SqlConnection("user id=BattleMage;" +
"password=;" +
"server=WINDOWSXPSP3;" +
"Trusted_Connection=yes;" +
"database=People;" +
"connection timeout=30");
}
}
}
доброго времени суток, уважаемые жители форума. вопрос следующий. прочитал несколько книжек по c# 2005, в каждой из них было написано, что для того, чтобы соединиться с sql server-ом через приложение, написанное на c#, надо добавить на форму sqldataadapter и написать некоторые строчки кода... ну и т.п. открыл свою студию 2008 и увидел, что в винформах этого нет. тогда в сети нашёл способ как это всё описать кодом.
вот, что у меня вышло:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace sql
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("select LastName, FirstName from Persons");
myReader = myCommand.ExecuteReader();
while (myReader.Read()) richTextBox1.Text = myReader.ToString();
}
private void button2_Click(object sender, EventArgs e)
{
SqlConnection myConnection = new SqlConnection("user id=BattleMage;" +
"password=;" +
"server=WINDOWSXPSP3;" +
"Trusted_Connection=yes;" +
"database=People;" +
"connection timeout=30");
}
}
}
Передайте в SqlCommand(String, SqlConnection) вторым параметром SqlConnection , который вы создаете в button2_Click . Естественно myConnection должна быть видима в button1_Click.
Или установите свойство myCommand.Connection после создания myCommand.
Вообщем грубо должно выглядеть примерно так:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace sql
{
public partial class Form1 : Form
{
private SqlConnection myConnection;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("select LastName, FirstName from Persons", myConnection);
myReader = myCommand.ExecuteReader();
while (myReader.Read()) richTextBox1.Text = myReader.ToString();
}
private void button2_Click(object sender, EventArgs e)
{
myConnection = new SqlConnection("user id=BattleMage;" +
"password=;" +
"server=WINDOWSXPSP3;" +
"Trusted_Connection=yes;" +
"database=People;" +
"connection timeout=30");
}
}
}
Или установите свойство myCommand.Connection после создания myCommand.
Вообщем грубо должно выглядеть примерно так:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace sql
{
public partial class Form1 : Form
{
private SqlConnection myConnection;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("select LastName, FirstName from Persons", myConnection);
myReader = myCommand.ExecuteReader();
while (myReader.Read()) richTextBox1.Text = myReader.ToString();
}
private void button2_Click(object sender, EventArgs e)
{
myConnection = new SqlConnection("user id=BattleMage;" +
"password=;" +
"server=WINDOWSXPSP3;" +
"Trusted_Connection=yes;" +
"database=People;" +
"connection timeout=30");
}
}
}
Кто-нибудь пользовался DB Audit 4.2 Или чем нибудь подобным?
В частности, интересует возможность собрать статистику обращений на уровне fields и stored procedures
Найти, например, неиспользуемые(невызываемые, брошеные) поля и процедуры.
Если да, то что и где брать?
В частности, интересует возможность собрать статистику обращений на уровне fields и stored procedures
Найти, например, неиспользуемые(невызываемые, брошеные) поля и процедуры.
Если да, то что и где брать?
1. как получить всех пользователей которые подключены к БД? я вкурсе про sp_who2 и master.dbo.sysprocesses но фигня в том что у них статус runnable только у локального пользователя...остальные sleeping
2. можно ли выбрать отдельные колонки из sp_who2?
2. можно ли выбрать отдельные колонки из sp_who2?
1. sleeping означает, что они к базе подключены, но никакого действия (SELECT, INSERT, UPDATE и т.д.) в момент, когда вы делали запрос к master.dbo.sysprocesses не выполняли.
2. Объявить табличную переменную и вставить в неё результат выполнения процедуры (insert @table exec sp_who2)
2. Объявить табличную переменную и вставить в неё результат выполнения процедуры (insert @table exec sp_who2)
1. уг..пасиб...там просто еще куча юзверей не sql вылазило...сделаю выбор по статусу и по принадлежности к sql пользователям...
2. хз как это сделать..но поколупаем...пасиб
2. хз как это сделать..но поколупаем...пасиб
Я вроде описал как это сделать. Могу чуть подробнее.
1. Смотрите в справке, какие поля возвращает sp_who2
2. Описываете соответствующую табличную переменную. DECLARE @table (field1 type1, field2 type2), где вместо field и type подставляете необходимые названия и типы полей. Количество и тип полей должны точно соответствовать тому, что возвращает процедура.
3. Вставляете в таблицу результат процедуры. INSERT @table EXEC sp_who2
4. Далее из таблицы выбираете уже необходимые поля, сортируете, соединяете, короче делаете, что душе угодно.
1. Смотрите в справке, какие поля возвращает sp_who2
2. Описываете соответствующую табличную переменную. DECLARE @table (field1 type1, field2 type2), где вместо field и type подставляете необходимые названия и типы полей. Количество и тип полей должны точно соответствовать тому, что возвращает процедура.
3. Вставляете в таблицу результат процедуры. INSERT @table EXEC sp_who2
4. Далее из таблицы выбираете уже необходимые поля, сортируете, соединяете, короче делаете, что душе угодно.
ага понял..спс большое...я описывал не все поля
Здравствуйте!
Такой вот вопрос. Имеется SQL Server 2005 Std Eng. Есть БД с одной таблицей, ключ (id) в таблице "автоматический счётчик" (+1 при добавлении записи). Вопросы:
1. Я как понимаю, maximum file size : restricted file growth - это ограничение на размер файла БД? Что будет при добавлении новой записи в таблицу, когда файл достигнет своего предела?
Хотелось бы, чтобы по достижении файла БД максимального размера, вновь добавляемые записи затирали бы самую "старую" строку (или строку с минимальным id). Такое возможно? Как сделать? Еще похожий вопрос. Как сделать, чтоб по достижению максимально возможного значения, id вновь сбрасывался бы, становился бы равен 1, затирая существующие записи?
Такой вот вопрос. Имеется SQL Server 2005 Std Eng. Есть БД с одной таблицей, ключ (id) в таблице "автоматический счётчик" (+1 при добавлении записи). Вопросы:
1. Я как понимаю, maximum file size : restricted file growth - это ограничение на размер файла БД? Что будет при добавлении новой записи в таблицу, когда файл достигнет своего предела?
Хотелось бы, чтобы по достижении файла БД максимального размера, вновь добавляемые записи затирали бы самую "старую" строку (или строку с минимальным id). Такое возможно? Как сделать? Еще похожий вопрос. Как сделать, чтоб по достижению максимально возможного значения, id вновь сбрасывался бы, становился бы равен 1, затирая существующие записи?
niichavo
Это невозможно. Будет генерироваться ошибка.
Это невозможно. Будет генерироваться ошибка.
volser
Цитата:
"Это" - это что? Т.е. если ограничить размер файла БД, то будет генерироваться ошибка, при добавлении новой записи? Правильно я понимаю?
Ну а возможно ли как-нибудь ограничить количество строк в таблице?
А сбрасывать счётчик-ключевое поле до единицы можно? Например, при достижении таблицы длины в N строк?
Добавлено:
Как сбросить счётчик я нашёл: DBCC CHECKIDENT... Правда это не решает задачу, да и потом возможны ошибки при совпадении ключевых полей... Чувствую нужно при добавлении записи организовывать проверки всякие или копать в сторону ограничений и/или триггеров...
Ещё вопрос. Что будет при добавлении записи если счётчик-ключевое поле уже достиг своего предельного значения. Тоже будет генерироваться ошибка без добавления записи?
Цитата:
Это невозможно
"Это" - это что? Т.е. если ограничить размер файла БД, то будет генерироваться ошибка, при добавлении новой записи? Правильно я понимаю?
Ну а возможно ли как-нибудь ограничить количество строк в таблице?
А сбрасывать счётчик-ключевое поле до единицы можно? Например, при достижении таблицы длины в N строк?
Добавлено:
Как сбросить счётчик я нашёл: DBCC CHECKIDENT... Правда это не решает задачу, да и потом возможны ошибки при совпадении ключевых полей... Чувствую нужно при добавлении записи организовывать проверки всякие или копать в сторону ограничений и/или триггеров...
Ещё вопрос. Что будет при добавлении записи если счётчик-ключевое поле уже достиг своего предельного значения. Тоже будет генерироваться ошибка без добавления записи?
Цитата:
Что будет при добавлении новой записи в таблицу, когда файл достигнет своего предела?
Зависит от настроек сервера. Либо база станет доступной только для чтения, либо сработает autogrowth и файл данных автоматически увеличится.
Цитата:
копать в сторону ограничений и/или триггеров...
ограничения вам вряд ли помогут, а триггеры.. может быть и помогут копайте в сторону INSERT .. BEFORE. А по другому эту задачу нельзя решить? Обязательно заменять данные в таблице?
bigsloth
Цитата:
Можно конечно и в обычной процедуре добавления устроить проверку, например, найти самую старю запись (есть столбец datatime) или удалить строку с самым маленьким показателем счётчика, когда число строк в таблице превысит некоторый лимит. Ещё не определился до конца.
Цитата:
Задача такая. Не дать расти таблице до бесконечности. Ну а если установлен предел росту таблице (не важно какими методами), и таблица достигла своего предела, а новые данные нужно добавлять, то что в данном случае делать? Я кроме как удалять или перезаписывать старые строки решения не вижу. Может быть вы видите альтернативное решение задачи?
Цитата:
А по другому эту задачу нельзя решить?
Можно конечно и в обычной процедуре добавления устроить проверку, например, найти самую старю запись (есть столбец datatime) или удалить строку с самым маленьким показателем счётчика, когда число строк в таблице превысит некоторый лимит. Ещё не определился до конца.
Цитата:
Обязательно заменять данные в таблице?
Задача такая. Не дать расти таблице до бесконечности. Ну а если установлен предел росту таблице (не важно какими методами), и таблица достигла своего предела, а новые данные нужно добавлять, то что в данном случае делать? Я кроме как удалять или перезаписывать старые строки решения не вижу. Может быть вы видите альтернативное решение задачи?
niichavo
Сделайте триггер INSTEAD OF на добавление. И проверяйте количество записей в таблице. Если превышает допустимое, то удаляйте более старые записи.
Сделайте триггер INSTEAD OF на добавление. И проверяйте количество записей в таблице. Если превышает допустимое, то удаляйте более старые записи.
bigsloth
Цитата:
В MS SQL Server 2005 я не нашёл BEFORE. Не ткёте в MSDN, где упоминается INSERT .. BEFORE?
volser
Цитата:
Так наверное и сделаю. Хотя мне кажется, что проще написать проверку в встроенной процедуре (я использую для выборки и вставки встроенные процедуры).
Всем спасибо!
Цитата:
копайте в сторону INSERT .. BEFORE
В MS SQL Server 2005 я не нашёл BEFORE. Не ткёте в MSDN, где упоминается INSERT .. BEFORE?
volser
Цитата:
Сделайте триггер INSTEAD OF на добавление
Так наверное и сделаю. Хотя мне кажется, что проще написать проверку в встроенной процедуре (я использую для выборки и вставки встроенные процедуры).
Всем спасибо!
niichavo
В MS SQL Server 2005/2008 есть только два вида триггеров. INSTEAD OF и AFTER (он же FOR).
В MS SQL Server 2005/2008 есть только два вида триггеров. INSTEAD OF и AFTER (он же FOR).
niichavo
дико извиняюсь, что ввел в заблуждение. имелся в виду именно INSTEAD OF..
Все-таки идея переписывать таблицу мне кажется немного неправильной.. Скорее всего это приведет к росту фрагментации индексов, что скажется на производительности. Вам так дорого место на жестком диске? Может имеет смысл посмотреть в сторону секционирования и после накопления определенного числа записей (например, в 2 раза больше, чем требуется для работы приложения) очищать старую секцию?
дико извиняюсь, что ввел в заблуждение. имелся в виду именно INSTEAD OF..
Все-таки идея переписывать таблицу мне кажется немного неправильной.. Скорее всего это приведет к росту фрагментации индексов, что скажется на производительности. Вам так дорого место на жестком диске? Может имеет смысл посмотреть в сторону секционирования и после накопления определенного числа записей (например, в 2 раза больше, чем требуется для работы приложения) очищать старую секцию?
bigsloth
Цитата:
Для общего развития я гляну, спасибо. Секционированные таблицы и индексы поддерживаются только в выпусках Microsoft SQL Server 2005 Enterprise Edition и Developer Edition, а у меня Microsoft SQL Server 2005 Standart.
Цитата:
Может имеет смысл посмотреть в сторону секционирования
Для общего развития я гляну, спасибо. Секционированные таблицы и индексы поддерживаются только в выпусках Microsoft SQL Server 2005 Enterprise Edition и Developer Edition, а у меня Microsoft SQL Server 2005 Standart.
ВСем доброго времени суток.
Очень надеюсь на Вашу подсказку....
Случилась такая штуковина: Перестал работать SQL Profiler. Стоит Sql 2005 Standart. После установки и загрузки баз все работало...но спустя пару недель..слетел профайлер...При этом заметил, что перестала запускаться служба "Optimizer .net ...". Как то в инете наткнулся на одного парня...у которого случилась очень похожая фигня...Говорит, что переставил visual studio 2005 и всё...
Кто что подскажет?
Сразу извиняюсь, что не выложил подробную инфу по ошибкам...просто у меня не постоянный доступ к серверу...
И кстати, зодно..подскажите пожалуста - как сделать, чтобы в таблице строки шли по алфавитному порядку значений определенного столбца. Т.е. есть таблица персонала. Есть программа которая показывает отчет с этой таблицы. Как сделать чтобы персонал показывался по алфавитному порядку...
Знаю что при обработке запроса нужно в конце использовать order by...А можно просто как то сделать так, чтобы сама таблица была упорядоченая...Просто не знаю как и какой запрос использует вышеупомянутая программа...
Заранее спасибо
Очень надеюсь на Вашу подсказку....
Случилась такая штуковина: Перестал работать SQL Profiler. Стоит Sql 2005 Standart. После установки и загрузки баз все работало...но спустя пару недель..слетел профайлер...При этом заметил, что перестала запускаться служба "Optimizer .net ...". Как то в инете наткнулся на одного парня...у которого случилась очень похожая фигня...Говорит, что переставил visual studio 2005 и всё...
Кто что подскажет?
Сразу извиняюсь, что не выложил подробную инфу по ошибкам...просто у меня не постоянный доступ к серверу...
И кстати, зодно..подскажите пожалуста - как сделать, чтобы в таблице строки шли по алфавитному порядку значений определенного столбца. Т.е. есть таблица персонала. Есть программа которая показывает отчет с этой таблицы. Как сделать чтобы персонал показывался по алфавитному порядку...
Знаю что при обработке запроса нужно в конце использовать order by...А можно просто как то сделать так, чтобы сама таблица была упорядоченая...Просто не знаю как и какой запрос использует вышеупомянутая программа...
Заранее спасибо
Uniqas
Для сортировки используй order by... Данные в самой таблице хранятся в произвольном порядке.
Для сортировки используй order by... Данные в самой таблице хранятся в произвольном порядке.
volser
Ну почему же в произвольном.. Они хранятся в порядке возрастания ключа кластерного индекса. Другое дело, что никто не гарантирует вывод данных, без явного указания сортировки, в этом порядке..
Поэтому, Uniqas, действительно нужно использовать order by
Ну почему же в произвольном.. Они хранятся в порядке возрастания ключа кластерного индекса. Другое дело, что никто не гарантирует вывод данных, без явного указания сортировки, в этом порядке..
Поэтому, Uniqas, действительно нужно использовать order by
Страницы: 1234567891011121314151617181920212223242526272829
Предыдущая тема: Генератор 10-ти разрядных ключей
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.