Как да се отърва от свойствата на разширени таблици в SQL Server 2000?

Рекастирам отново въпрос, който зададох по-рано сега, когато имам представа за причината за проблема, който виждам.

Какво имам: Таблици в DB на SQL Server 2000. Преглеждам/редактирам таблиците с Access 2007, с SQL Server Management Studio 2005 и понякога с SQL 2000 Enterprise Manager.

Какво направих: Опитах се да копирам DB от SQL Server 2000 в моя локален екземпляр на SQL Server 2005. Копирането стана без грешки. Когато се опитах да видя таблици в копираната база данни в Access 2007, получих изключения, хвърлени към мен.

Какво открих: Таблиците, които хвърляха изключенията, имаха разширени свойства, свързани с тях. Това проследих до казването на „да“ на запазването на промените в оформлението на таблицата в Access.

Какво се опитах да направя, за да поправя това: Опитах се да премахна разширените свойства чрез SQL Server 2005 Management Studio и да копирам отново DB, но това не реши проблема. При скриптирането на таблиците видях, че разширените свойства наистина не изчезнаха в таблиците.

Сега към въпроса ми:

Проследих таблица с помощта на Enterprise Manager, наречена таблица sysproperties, която се намира в моята база данни. Това може да е недокументирана таблица (въздишка), но изглежда, че има разширена информация за свойствата, която ми причинява всички главоболия. Опитах се да променя оформлението на друга таблица, за да видя дали има добавени записи към таблицата sysproperties, но изглеждаше, че отговорът беше не.

Някой има ли опит с този проблем? Безопасно ли е просто да премахнете записите в тази таблица? Мисля, че повечето от „промените в оформлението“, които направих, бяха коригиране на размера на колоните в Access, така че ако това е всичко, което се съхранява там, мога да живея с това.

Нещо повече, потърсих свойствата на разширените таблици в Enterprise Manager и те не бяха лесно достъпни, както са от SSMS 2005.

Благодаря предварително!


person John    schedule 01.09.2009    source източник


Отговори (1)


Не казвате дали вашият Access front е MDB или ACCDB, но ако е първият, защо не зададете разрешения на TableDef, които не позволяват на потребителите да запазват промени в дизайна? Ще трябва да проверите това, но мисля, че свойствата MODIFY DESIGN и ADMINISTER бихте искали да премахнете от връзките към таблицата във вашия преден край.

Ако това е ACCDB, може би единственият начин да го поправите е да пресъздадете свързаните таблици.

Питам се обаче защо позволявате на вашите потребители да редактират таблици директно. Трябва да им давате достъп до данните само във формуляри и отчети (формулярите могат да бъдат листове с данни, така че да копирате всички удобни функции на таблиците с бази данни, без да е необходимо да използвате самите таблици).

Освен това изглежда, че вашите потребители трябва да имат привилегии върху таблиците на SQL Server, които са над това, което трябва да имат. Не знам подробностите за това как тези свойства се съхраняват в SQL Server (моята работа с SQL Server е с по-стари версии), но трябва да има групови разрешения, които могат да бъдат присвоени на тези обекти, които биха забранили запазването на тези свойства на сървъра.

Всичко казано дотук, вие сами си причинявате проблем, като давате на потребителите директен достъп до свързаните таблици. Поправете това и проблемът ви ще изчезне, без да е необходимо да се притеснявате за потребителските разрешения за таблици в Access или SQL Server.

person David-W-Fenton    schedule 02.09.2009
comment
Благодаря Дейвид за отговора. Не съм посочил това във въпроса, но моите потребители имат достъп до таблиците чрез приложение, което пиша, а не чрез Access. Запазването на промените в оформлението бяха неща, които направих (без да знам тези сложни последствия) като разработчик на приложението. - person John; 02.09.2009
comment
Така че, ако не направите тези промени отново, проблемът няма да се повтори. Можете да се защитите от себе си, ако приложите Jet ULS защита към свързаните таблици. Друг вариант би бил да премахнете свързаните таблици и да използвате заявки с низа за свързване на ODBC на мястото на свързаните таблици -- в този случай Access вероятно няма да запази разширените свойства. - person David-W-Fenton; 03.09.2009