wie erteile ich einer rolle in postgresql drop-table- / funktionsberechtigungen?
<p>ich möchte <code>drop</code> berechtigungen für alle tabellen und funktionen (nicht nur für diejenigen, die dem benutzer gehören) in einem bestimmten schema einer bestimmten datenbank einer bestimmten rolle gewähren. jedoch, <code>grant all privileges</code> ist nicht genug und ich habe nicht herausgefunden, wie ich ohne die rolle eines superusers auskommen soll - superuser hat rechte über andere datenbanken auf demselben server, was ich nicht will. ich hätte nichts gegen superuser-berechtigungen, die auf eine bestimmte datenbank beschränkt sind, aber ich bin mir nicht sicher, wie ich das machen soll.</p><p>mein code:</p><pre><code>create user \_administrator password 'pwd12345'; create role administrator nologin admin \_administrator; grant all privileges on database "mydb" to administrator; grant all privileges on schema public to administrator; grant all privileges on all tables in schema public to administrator; grant all privileges on all sequences in schema public to administrator; grant all privileges on all functions in schema public to administrator; </code></pre><p><code>administrator</code> ist die gruppe von <code>mydb</code> datenbankadministratoren, <code>\_administrator</code> ist die mächtigste rolle, unter der sich meine client-app anmelden kann.</p><p>was habe ich vermisst oder falsch gemacht?</p>
<p>nur der <strong> eigentümer </strong> (und superuser) können objekte löschen. <a href="https://www.postgresql.org/docs/current/sql-grant.html">pro dokumentation :</a> </p><blockquote> <p>das recht, ein objekt fallen zu lassen oder seine definition in irgendeiner weise zu ändern, wird nicht als gewährbares privileg behandelt. es ist dem eigentümer inhärent und kann nicht gewährt oder widerrufen werden. (ein ähnlicher effekt kann jedoch erzielt werden, indem die mitgliedschaft in der rolle, der das objekt gehört, gewährt oder widerrufen wird (siehe unten).) der eigentümer verfügt implizit auch über alle gewährungsoptionen für das objekt.</p> </blockquote><p>machen sie also <code>administrator</code> <strong> <em> own</em> </strong> zu solchen objekten, die benutzer löschen können sollten.</p><pre><code>alter function foo() owner to administrator; alter table foo owner to administrator; </code></pre><p>und sie haben daran gedacht, tatsächlich eine gruppenmitgliedschaft zu gewähren, oder?</p><pre><code>grant administrator to \_administrator; </code></pre>
<p>es gibt optionen, die ihnen dabei helfen:</p><pre><code> --insert-ignore insert rows with insert ignore. --replace use replace into instead of insert into. -t, --no-create-info don't write table creation info. </code></pre><p>denken sie an dieses paradigma</p><ul> <li>mysqldump alles von db1 in dump1</li> <li>laden sie dump1 in db3</li> <li>mysqldump alles aus db2 mit --replace (oder --insert-ignore) und --no-create-info in dump2</li> <li>laden sie dump2 in db3</li> </ul> <p>hinweis: ab azure sql database v12 gelten diese einschränkungen nicht mehr.</p><p>das ist kein "primärindex". es gibt so etwas wie einen "primärschlüssel" und es gibt auch so etwas wie einen "clustered index". unterschiedliche konzepte, oft verwirrt. lassen sie uns angesichts dieser unterscheidung die frage noch einmal betrachten:</p><p>q1) kann der clustered-index in einer sql azure-tabelle geändert werden?<br> a: ja. verwenden sie <code>with (drop\_existing=on)</code>:</p><pre><code>create table friend ( userid int not null, id int not null); go create clustered index cdxfriend on friend (userid, id); go create clustered index cdxfriend on friend (id, userid) with (drop\_existing=on); go </code></pre><p>f2) kann der clustered-index einer tabelle mit einer primärschlüsseleinschränkung geändert werden?<br> a: ja, wie oben, solange die primärschlüsseleinschränkung nicht über den clustered-index erzwungen wird:</p><pre><code>create table friend ( userid int not null, id int not null identity(1,1), constraint pk\_friend primary key nonclustered (id)); create clustered index cdxfriend on friend (userid, id); go create clustered index cdxfriend on friend (id, userid) with (drop\_existing=on); go </code></pre><p>f3) kann die primärschlüsseleinschränkung einer tabelle geändert werden?<br> a: ja, solange die primäre einschränkung nicht über den clustered-index erzwungen wird:</p><pre><code>create table friend ( userid int not null, id int not null identity(1,1), constraint pk\_friend primary key nonclustered (id)); go create clustered index cdxfriend on friend (userid, id); go alter table friend drop constraint pk\_friend; alter table friend add constraint pk\_friend primary key nonclustered (userid) go </code></pre><p>f4) kann der primärschlüssel einer tabelle geändert werden, wenn er über den clustered-index erzwungen wird?<br> a: ja, wenn die tabelle nie zeilen hatte:</p><pre><code>create table friend ( userid int not null, id int not null identity(1,1), constraint pk\_friend primary key clustered (userid, id)); go alter table friend drop constraint pk\_friend; alter table friend add constraint pk\_friend primary key clustered (id, userid) go </code></pre><p>f5) kann der primärschlüssel einer tabelle geändert werden, wenn er über den clustered-index erzwungen wird, wenn die tabelle gefüllt ist?<br> a: nein. jede operation, die einen aufgefüllten clustered-index in einen heap konvertiert, wird in sql azure blockiert <em>, auch wenn die tabelle leer ist </em>:</p><pre><code>create table friend ( userid int not null, id int not null identity(1,1), constraint pk\_friend primary key clustered (userid, id)); go insert into friend (userid) values (1); delete from friend; go alter table friend drop constraint pk\_friend; </code></pre><p>als randnotiz: die einschränkung kann geändert werden, wenn die tabelle <em> abgeschnitten ist </em>.</p><p>die problemumgehung zum ändern der pk-einschränkung einer aufgefüllten tabelle besteht darin, das gute alte <a href="http://msdn.microsoft.com/en-us/library/ms188351.aspx"><code>sp\_rename</code></a> trick:</p><pre><code>create table friend ( userid int not null, id int not null identity(1,1), constraint pk\_friend primary key clustered (userid, id)); go insert into friend (userid) values (1); go create table friendnew ( userid int not null, id int not null identity(1,1), constraint pk\_friend\_new primary key clustered (id, userid)); go set identity\_insert friendnew on; insert into friendnew (userid, id) select userid, id from friend; set identity\_insert friendnew off; go begin transaction exec sp\_rename 'friend', 'friendold'; exec sp\_rename 'friendnew', 'friend'; commit; go sp\_help 'friend'; </code></pre><p>das <code>sp\_rename</code> ansatz hat einige probleme, vor allem, dass berechtigungen für die tabelle während des umbenennens nicht übertragen werden, sowie fremdschlüsseleinschränkungen.</p> <h2>aufgrund der empfehlungen in den kommentaren habe ich begonnen, <a href="http://tools.tortoisesvn.net/grepwin.html">grepwin</a> zu verwenden, und es ist fantastisch und <em> kostenlos</em>.</h2><hr><p>(ich bin immer noch ein fan von <a href="http://www.powergrep.com/">powergrep</a> , aber ich benutze es nicht mehr.)</p><p>ich weiß, dass sie es bereits erwähnt haben, aber powergrep ist <strong> fantastisch </strong>.</p><p>einige meiner lieblingsfunktionen sind:</p><ul> <li>klicken sie mit der rechten maustaste auf einen ordner, um powergrep darauf auszuführen</li> <li>verwenden sie reguläre ausdrücke oder wörtlichen text</li> <li>geben sie platzhalter für dateien an, die ein- und ausgeschlossen werden sollen</li> <li>suchen &amp; ersetzen</li> <li>der vorschaumodus ist gut, da sie sicherstellen können, dass sie das ersetzen, was sie beabsichtigen.</li> </ul><p>jetzt ist mir klar, dass die anderen grep-tools all das tun können. es ist nur so, dass powergrep alle funktionen in einer sehr benutzerfreundlichen benutzeroberfläche zusammenfasst.</p><p><strong> <em> von den gleichen wundervollen leuten, die sie mitgebracht haben <a href="http://en.wikipedia.org/wiki/regexbuddy">regexbuddy</a> und denen ich nichts mehr zu tun habe, als ihre sachen zu lieben.</em> </strong> (es sollte beachtet werden, dass regexbuddy eine basisversion von grep (für windows) selbst enthält und viel weniger kostet als powergrep.)</p><hr><h2>zusätzliche lösungen</h2><h3>vorhandene windows-befehle</h3><ul> <li> <a href="http://ss64.com/nt/findstr.html"> findstr </a> </li> <li> <a href="https://technet.microsoft.com/en-us/library/hh849903.aspx">auswahlzeichenfolge</a> in powershell</li> </ul><h3>linux-befehlsimplementierungen unter windows</h3><ul> <li> <a href="http://en.wikipedia.org/wiki/cygwin">cygwin</a> </li> <li> <a href="https://github.com/dthree/cash">bargeld</a> </li> </ul><h3>grep-tools mit grafischer oberfläche</h3><ul> <li> <a href="http://astrogrep.sourceforge.net/screenshots/">astrogrep</a> </li> <li> <a href="https://www.baremetalsoft.com/baregrep/">baregrep</a> </li> <li> <a href="http://stefanstools.sourceforge.net/grepwin.html">grepwin</a> </li> </ul><h3>zusätzliche grep-tools</h3><ul> <li> <a href="http://code.google.com/p/dngrep/">dngrep</a> </li> </ul> Eine Route ist nur eine Funktion. Sie können also wie gewohnt Argumente übergeben:


```
<code>// Redirect to /hello/Bob
def helloBob = Action {
    Redirect(routes.Application.hello("Bob"))    
}
</code>
```
Dieser Ausschnitt stammt von<http://www.playframework.org/documentation/2.0/ScalaRouting> (unten) Sie können verwenden 


```
DbConfiguration.SetConfiguration(new YourDbConfiguration());

```
  Sie können also Ihre Konfiguration verwenden, ohne ein Attribut zu verwenden. 

 Aber wenn ich benutze 


```
public CeDbConfiguration()
{
 SetDefaultConnectionFactory(new SqlCeConnectionFactory(SqlCeProviderServices.ProviderInvariantName,
                                                        @"c:\test",
                                                        @"c:\test\db.sdf"));
SetProviderServices(SqlCeProviderServices.ProviderInvariantName,
                    SqlCeProviderServices.Instance);
}

```
  Um eine SQL CE Factory zu konfigurieren, wird der Pfad *'C: \ test'* ignoriert und ich muss auch Database.DefaultConnectionFactory setzen !! Hallo,


aktiviere zunächst in den Optionen (Alt+P) unter "Anwendung" und "Verschiedenes" das "Fortgeschrittene Rechtesystem".


Damit ein Benutzer andere Benutzer in einem anderen Channel nicht sehen kann, muss der Wert für "Wert" des Rechts "i\_channel\_needed\_subscribe\_power" des Channels den Wert für "Wert" des Rechts "i\_channel\_subscribe\_power" des Benutzers überschreiten.  



Damit ein Benutzer ohne die Eingabe des Passworts einen Channel betreten kann, füge dem Benutzer den Wert für "Wert" des Rechts "b\_channel\_join\_ignore\_password" hinzu.


Diese Berechtigungen für Benutzer kannst du jeweils über Server Gruppen vergeben. Achte dabei darauf, dass die Gruppe über keinen Haken für "Wert" des Rechts "b\_client\_skip\_channelgroup\_permissions" verfügt.  
  
Bei weiteren Fragen kannst du dich gerne an mich wenden.


VG Hallo Pustiblume,


Du kannst die Vollmacht übernehmen. Achte jedoch darauf, dass kein Geld was Dich betrifft über das Konto des Vollmachtgebers abgewickelt wird.


Schöne Grüße Wenn eine Spalte in der Datenbank nullfähig ist, hat die Ergebnisklasse auch eine nullfähige Eigenschaft. 

 Wenn beispielsweise eine `Order` eine `Datetime` Spalte mit dem Namen `CreatedDate` , sieht die resultierende `Order` Klasse in etwa wie folgt aus: 


```
public partial class Order: EntityObject
{
  ...
  private DateTime? _createdDate;
  ...
}

```
  Wenn \_ `createdDate` keinen Wert hat, wenn Sie `ObjectContext.SaveChanges()` aufrufen, wird eine `System.DBNull` automatisch als Teil des Befehls insert oder update an die Datenbank gesendet. 

 Hoffe das hilft Alex Es lohnt sich, einen Blick auf diesen [`Blog Post`](http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/) werfen, aber letztendlich werden die Kriterien von Ihnen festgelegt. Sie müssen entscheiden, ob 

* schnelle Entwicklung
* Performance
* Code-zuerst
* DB zuerst

 oder was auch immer Sie suchen und priorisieren Sie die Liste basierend auf, was noch wichtiger ist. Dann verwenden Sie diese Liste, um Ihre Forschung zusammenzustellen. ganz einfach: zuerst tappt man merieke ri berit (merieke ri berit) für ihre fähigkeit. nachdem man anschließend die fähigkeit von pemmins aura (pemmin's aura) aktiviert hat, muss man diese erst verrechnen lassen, damit merieke ri berit (merieke ri berit) wieder enttappt wird. anschließend aktiviert man ihre fähigkeit ein zweites mal. dann befindet sich ihre aktivierte fähigkeit zweimal auf dem stapel, und wenn diese verrechnet werden, übernimmt man die kontrolle über die zwei als ziel gewählten kreaturen. denke daran: wenn alle spieler passen, wird nur der oberste spruch oder die oberste fähigkeit auf dem stapel verrechnet, danach erhalten die spieler priorität und können sprüche wirken oder fähigkeiten aktivieren. empfohlene lektüre: "kapitel 2: zaubersprüche, fähigkeiten und effekte" im regelbuch sowie marios regelerläuterungen (10) -- priorität (vorrang).