Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Microsoft SQL Server

Автор: DemianZ
Дата сообщения: 05.08.2009 09:30
Поскажите плиз , у меня версия oracle 10.2.0.3.0 как конвертировать автомотически типы данных в sql 2005 (пробовал sql import and export wizard в атомотическом режиме не конвертирует типы данных).
Автор: volser
Дата сообщения: 05.08.2009 10:23
DemianZ
Что еще за типы данных?
Автор: DemianZ
Дата сообщения: 05.08.2009 16:29
в базе oracle имеются специфические типы данных : long_row , row аналоги в sql - text
Автор: naPmu3aH
Дата сообщения: 05.08.2009 23:10
DemianZ
Я сам не пробовал, но может поможет...
http://www.microsoft.com/sqlserver/2005/en/us/migration-oracle.aspx
Автор: DemianZ
Дата сообщения: 06.08.2009 12:25
такое чувство , что данное приложение дает переместить базу с sql 2005 на 2000 и обратно...
Автор: SIgor33
Дата сообщения: 13.08.2009 14:05
afiget
Конечно пробовал. Проблема в том что не хочет руский текст в rtf искать.
Автор: magazinus
Дата сообщения: 13.08.2009 19:59
Microsoft SQL Server 2008, в нем БД, есть таблица, внутри несколько тыс. строк, 7 столбцов. Задача: ограничить доступ на запись к одной из строк (либо к конкретной ячейке, не важно) в этой таблице, оставив ей право на чтение.
Гуглил, нашел что-то вроде row-level security, но не продвинулся. Просьба помочь!
Автор: BlackVetal
Дата сообщения: 14.08.2009 06:14
magazinus
Как средствами SQL Server не знаю, но ...
В свое время реализовали программно для ограничения доступа к строке: Каждой строке назначается рейтинг (например, 1 - чтение, 3 - запись) у пользователя тоже назначался рейтинг (по правам доступа): например, 0 - доступа нет, 2 - чтение и 4 - полный доступ ... ну и при запросе естесно все это дело сравнивалось ...
Автор: dneprcomp
Дата сообщения: 14.08.2009 19:28
magazinus
По способу BlackVetal хорошо. Собственно, его способ и есть row-level security
http://technet.microsoft.com/en-us/library/cc966395.aspx

Вот еще один
Все строки, что должны быть залоканы, выносим в отдельный table идентичный по структуре оригинальному table. Назначаем table-копии права Read Only
В Select делаем Union этих двух table

Автор: BattleMage
Дата сообщения: 03.09.2009 01:54
заранее извиняюсь, если не в том месте тема. можете перенести, но только сообщением на е-мейл уведомите ссылкой.

доброго времени суток, уважаемые жители форума. вопрос следующий. прочитал несколько книжек по 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");
}
}
}
Автор: AlexNMelnikov
Дата сообщения: 06.09.2009 22:03
Передайте в 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");
}
}
}
Автор: dneprcomp
Дата сообщения: 17.09.2009 19:35
Кто-нибудь пользовался DB Audit 4.2 Или чем нибудь подобным?
В частности, интересует возможность собрать статистику обращений на уровне fields и stored procedures
Найти, например, неиспользуемые(невызываемые, брошеные) поля и процедуры.
Если да, то что и где брать?
Автор: mdid
Дата сообщения: 23.09.2009 13:39
1. как получить всех пользователей которые подключены к БД? я вкурсе про sp_who2 и master.dbo.sysprocesses но фигня в том что у них статус runnable только у локального пользователя...остальные sleeping

2. можно ли выбрать отдельные колонки из sp_who2?
Автор: counsellor
Дата сообщения: 23.09.2009 14:37
1. sleeping означает, что они к базе подключены, но никакого действия (SELECT, INSERT, UPDATE и т.д.) в момент, когда вы делали запрос к master.dbo.sysprocesses не выполняли.

2. Объявить табличную переменную и вставить в неё результат выполнения процедуры (insert @table exec sp_who2)
Автор: mdid
Дата сообщения: 23.09.2009 14:55
1. уг..пасиб...там просто еще куча юзверей не sql вылазило...сделаю выбор по статусу и по принадлежности к sql пользователям...
2. хз как это сделать..но поколупаем...пасиб
Автор: counsellor
Дата сообщения: 23.09.2009 16:42
Я вроде описал как это сделать. Могу чуть подробнее.
1. Смотрите в справке, какие поля возвращает sp_who2
2. Описываете соответствующую табличную переменную. DECLARE @table (field1 type1, field2 type2), где вместо field и type подставляете необходимые названия и типы полей. Количество и тип полей должны точно соответствовать тому, что возвращает процедура.
3. Вставляете в таблицу результат процедуры. INSERT @table EXEC sp_who2
4. Далее из таблицы выбираете уже необходимые поля, сортируете, соединяете, короче делаете, что душе угодно.
Автор: mdid
Дата сообщения: 23.09.2009 16:48
ага понял..спс большое...я описывал не все поля
Автор: niichavo
Дата сообщения: 28.09.2009 16:36
Здравствуйте!

Такой вот вопрос. Имеется SQL Server 2005 Std Eng. Есть БД с одной таблицей, ключ (id) в таблице "автоматический счётчик" (+1 при добавлении записи). Вопросы:

1. Я как понимаю, maximum file size : restricted file growth - это ограничение на размер файла БД? Что будет при добавлении новой записи в таблицу, когда файл достигнет своего предела?

Хотелось бы, чтобы по достижении файла БД максимального размера, вновь добавляемые записи затирали бы самую "старую" строку (или строку с минимальным id). Такое возможно? Как сделать? Еще похожий вопрос. Как сделать, чтоб по достижению максимально возможного значения, id вновь сбрасывался бы, становился бы равен 1, затирая существующие записи?
Автор: volser
Дата сообщения: 28.09.2009 17:24
niichavo
Это невозможно. Будет генерироваться ошибка.
Автор: niichavo
Дата сообщения: 28.09.2009 20:20
volser

Цитата:
Это невозможно

"Это" - это что? Т.е. если ограничить размер файла БД, то будет генерироваться ошибка, при добавлении новой записи? Правильно я понимаю?

Ну а возможно ли как-нибудь ограничить количество строк в таблице?
А сбрасывать счётчик-ключевое поле до единицы можно? Например, при достижении таблицы длины в N строк?

Добавлено:
Как сбросить счётчик я нашёл: DBCC CHECKIDENT... Правда это не решает задачу, да и потом возможны ошибки при совпадении ключевых полей... Чувствую нужно при добавлении записи организовывать проверки всякие или копать в сторону ограничений и/или триггеров...

Ещё вопрос. Что будет при добавлении записи если счётчик-ключевое поле уже достиг своего предельного значения. Тоже будет генерироваться ошибка без добавления записи?
Автор: bigsloth
Дата сообщения: 29.09.2009 05:15

Цитата:
Что будет при добавлении новой записи в таблицу, когда файл достигнет своего предела?

Зависит от настроек сервера. Либо база станет доступной только для чтения, либо сработает autogrowth и файл данных автоматически увеличится.


Цитата:
копать в сторону ограничений и/или триггеров...

ограничения вам вряд ли помогут, а триггеры.. может быть и помогут копайте в сторону INSERT .. BEFORE. А по другому эту задачу нельзя решить? Обязательно заменять данные в таблице?
Автор: niichavo
Дата сообщения: 29.09.2009 09:08
bigsloth

Цитата:
А по другому эту задачу нельзя решить?

Можно конечно и в обычной процедуре добавления устроить проверку, например, найти самую старю запись (есть столбец datatime) или удалить строку с самым маленьким показателем счётчика, когда число строк в таблице превысит некоторый лимит. Ещё не определился до конца.

Цитата:
Обязательно заменять данные в таблице?

Задача такая. Не дать расти таблице до бесконечности. Ну а если установлен предел росту таблице (не важно какими методами), и таблица достигла своего предела, а новые данные нужно добавлять, то что в данном случае делать? Я кроме как удалять или перезаписывать старые строки решения не вижу. Может быть вы видите альтернативное решение задачи?
Автор: volser
Дата сообщения: 29.09.2009 10:52
niichavo
Сделайте триггер INSTEAD OF на добавление. И проверяйте количество записей в таблице. Если превышает допустимое, то удаляйте более старые записи.
Автор: niichavo
Дата сообщения: 29.09.2009 15:56
bigsloth

Цитата:
копайте в сторону INSERT .. BEFORE

В MS SQL Server 2005 я не нашёл BEFORE. Не ткёте в MSDN, где упоминается INSERT .. BEFORE?
volser

Цитата:
Сделайте триггер INSTEAD OF на добавление

Так наверное и сделаю. Хотя мне кажется, что проще написать проверку в встроенной процедуре (я использую для выборки и вставки встроенные процедуры).

Всем спасибо!
Автор: volser
Дата сообщения: 29.09.2009 17:30
niichavo
В MS SQL Server 2005/2008 есть только два вида триггеров. INSTEAD OF и AFTER (он же FOR).
Автор: bigsloth
Дата сообщения: 30.09.2009 04:43
niichavo
дико извиняюсь, что ввел в заблуждение. имелся в виду именно INSTEAD OF..
Все-таки идея переписывать таблицу мне кажется немного неправильной.. Скорее всего это приведет к росту фрагментации индексов, что скажется на производительности. Вам так дорого место на жестком диске? Может имеет смысл посмотреть в сторону секционирования и после накопления определенного числа записей (например, в 2 раза больше, чем требуется для работы приложения) очищать старую секцию?
Автор: niichavo
Дата сообщения: 30.09.2009 09:43
bigsloth

Цитата:
Может имеет смысл посмотреть в сторону секционирования

Для общего развития я гляну, спасибо. Секционированные таблицы и индексы поддерживаются только в выпусках Microsoft SQL Server 2005 Enterprise Edition и Developer Edition, а у меня Microsoft SQL Server 2005 Standart.
Автор: Uniqas
Дата сообщения: 07.10.2009 09:31
ВСем доброго времени суток.
Очень надеюсь на Вашу подсказку....
Случилась такая штуковина: Перестал работать SQL Profiler. Стоит Sql 2005 Standart. После установки и загрузки баз все работало...но спустя пару недель..слетел профайлер...При этом заметил, что перестала запускаться служба "Optimizer .net ...". Как то в инете наткнулся на одного парня...у которого случилась очень похожая фигня...Говорит, что переставил visual studio 2005 и всё...
Кто что подскажет?
Сразу извиняюсь, что не выложил подробную инфу по ошибкам...просто у меня не постоянный доступ к серверу...


И кстати, зодно..подскажите пожалуста - как сделать, чтобы в таблице строки шли по алфавитному порядку значений определенного столбца. Т.е. есть таблица персонала. Есть программа которая показывает отчет с этой таблицы. Как сделать чтобы персонал показывался по алфавитному порядку...
Знаю что при обработке запроса нужно в конце использовать order by...А можно просто как то сделать так, чтобы сама таблица была упорядоченая...Просто не знаю как и какой запрос использует вышеупомянутая программа...
Заранее спасибо
Автор: volser
Дата сообщения: 07.10.2009 10:41
Uniqas
Для сортировки используй order by... Данные в самой таблице хранятся в произвольном порядке.
Автор: bigsloth
Дата сообщения: 07.10.2009 12:34
volser
Ну почему же в произвольном.. Они хранятся в порядке возрастания ключа кластерного индекса. Другое дело, что никто не гарантирует вывод данных, без явного указания сортировки, в этом порядке..
Поэтому, Uniqas, действительно нужно использовать order by

Страницы: 1234567891011121314151617181920212223242526272829

Предыдущая тема: Генератор 10-ти разрядных ключей


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.